From 9f171faf1cb93d946338ecb47a0527db7ae1f74a Mon Sep 17 00:00:00 2001
From: Oliver <oliver.henry.walters@gmail.com>
Date: Thu, 10 Mar 2022 20:25:43 +1100
Subject: [PATCH] I18n merge (#2737)

* 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

* 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
---
 InvenTree/locale/de/LC_MESSAGES/django.po | 1775 ++++++++++----------
 InvenTree/locale/el/LC_MESSAGES/django.po | 1759 ++++++++++----------
 InvenTree/locale/es/LC_MESSAGES/django.po | 1775 ++++++++++----------
 InvenTree/locale/fr/LC_MESSAGES/django.po | 1761 ++++++++++----------
 InvenTree/locale/he/LC_MESSAGES/django.po | 1759 ++++++++++----------
 InvenTree/locale/hu/LC_MESSAGES/django.po | 1785 +++++++++++----------
 InvenTree/locale/id/LC_MESSAGES/django.po | 1759 ++++++++++----------
 InvenTree/locale/it/LC_MESSAGES/django.po | 1771 ++++++++++----------
 InvenTree/locale/ja/LC_MESSAGES/django.po | 1759 ++++++++++----------
 InvenTree/locale/ko/LC_MESSAGES/django.po | 1759 ++++++++++----------
 InvenTree/locale/nl/LC_MESSAGES/django.po | 1759 ++++++++++----------
 InvenTree/locale/no/LC_MESSAGES/django.po | 1761 ++++++++++----------
 InvenTree/locale/pl/LC_MESSAGES/django.po | 1763 ++++++++++----------
 InvenTree/locale/pt/LC_MESSAGES/django.po | 1759 ++++++++++----------
 InvenTree/locale/ru/LC_MESSAGES/django.po | 1759 ++++++++++----------
 InvenTree/locale/sv/LC_MESSAGES/django.po | 1759 ++++++++++----------
 InvenTree/locale/th/LC_MESSAGES/django.po | 1759 ++++++++++----------
 InvenTree/locale/tr/LC_MESSAGES/django.po | 1769 ++++++++++----------
 InvenTree/locale/vi/LC_MESSAGES/django.po | 1759 ++++++++++----------
 InvenTree/locale/zh/LC_MESSAGES/django.po | 1771 ++++++++++----------
 20 files changed, 18390 insertions(+), 16890 deletions(-)

diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po
index d32ffdd033..ad7c0f051c 100644
--- a/InvenTree/locale/de/LC_MESSAGES/django.po
+++ b/InvenTree/locale/de/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: German\n"
 "Language: de_DE\n"
@@ -122,7 +122,7 @@ msgstr "Fehlende Datei"
 msgid "Missing external link"
 msgstr "Fehlender externer Link"
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr "Anhang"
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr "Datei zum Anhängen auswählen"
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr "Link"
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr "Link zu einer externen URL"
 
@@ -152,11 +152,11 @@ msgstr "Kommentar"
 msgid "File comment"
 msgstr "Datei-Kommentar"
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr "Benutzer"
 
@@ -193,17 +193,17 @@ msgstr "Fehler beim Umbenennen"
 msgid "Invalid choice"
 msgstr "Ungültige Auswahl"
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr "Name"
 
@@ -212,7 +212,7 @@ msgstr "Name"
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr "Name"
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr "Beschreibung"
 
@@ -240,7 +240,7 @@ msgstr "Beschreibung (optional)"
 msgid "parent"
 msgstr "Eltern"
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr "Muss eine gültige Nummer sein"
 
@@ -501,7 +501,7 @@ msgstr "Vom übergeordneten Element geteilt"
 msgid "Split child item"
 msgstr "Unterobjekt geteilt"
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr "Lagerartikel zusammengeführt"
 
@@ -648,7 +648,7 @@ msgstr "Ungültige Wahl für übergeordneten Bauauftrag"
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr "Bauauftrag"
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr "Bauauftragsreferenz"
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr "Referenz"
@@ -692,10 +692,10 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr "Teil"
 
@@ -733,8 +733,8 @@ msgstr "Auftrag Referenz"
 msgid "SalesOrder to which this build is allocated"
 msgstr "Bestellung, die diesem Bauauftrag zugewiesen ist"
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr "Quell-Lagerort"
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr "Bau-Statuscode"
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr "Losnummer"
 
@@ -783,7 +783,7 @@ msgstr "Losnummer"
 msgid "Batch code for this build output"
 msgstr "Losnummer für dieses Endprodukt"
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr "Erstelldatum"
@@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Zieldatum für Bauauftrag-Fertigstellung."
 
 #: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr "Fertigstellungsdatum"
 
@@ -805,7 +805,7 @@ msgstr "Fertigstellungsdatum"
 msgid "completed by"
 msgstr "Fertiggestellt von"
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr "Aufgegeben von"
 
@@ -816,9 +816,9 @@ msgstr "Nutzer der diesen Bauauftrag erstellt hat"
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr "Verantwortlicher Benutzer"
 
@@ -829,7 +829,7 @@ msgstr "Nutzer der für diesen Bauauftrag zuständig ist"
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr "Externer Link"
@@ -839,17 +839,17 @@ msgstr "Externer Link"
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr "Notizen"
 
@@ -869,69 +869,69 @@ msgstr "Endprodukt bereits hergstellt"
 msgid "Build output does not match Build Order"
 msgstr "Endprodukt stimmt nicht mit dem Bauauftrag überein"
 
-#: build/models.py:1162
+#: build/models.py:1168
 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:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr "Zugewiesene Menge ({q}) darf nicht verfügbare Menge ({a}) übersteigen"
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr "BestandObjekt ist zu oft zugewiesen"
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 msgid "Allocation quantity must be greater than zero"
 msgstr "Reserviermenge muss größer null sein"
 
-#: build/models.py:1193
+#: build/models.py:1199
 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:1256
 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:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr "Bauauftrag"
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr "Bauauftrag starten um Teile zuzuweisen"
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr "Lagerartikel"
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr "Quell-Lagerartikel"
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr "Quell-Lagerartikel"
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr "Anzahl"
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr "Anzahl an Lagerartikel dem Bauauftrag zuweisen"
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr "Installiere in"
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr "Ziel-Lagerartikel"
 
@@ -998,7 +999,7 @@ msgstr "Menge der Endprodukte angeben"
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr "Anzahl muss größer Null sein"
 
@@ -1013,7 +1014,7 @@ msgstr "Ganzzahl erforderlich da die Stückliste nachverfolgbare Teile enthält"
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr "Seriennummer"
 
@@ -1042,12 +1043,12 @@ msgstr "Eine Liste von Endprodukten muss angegeben werden"
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr "Lagerort"
 
@@ -1058,10 +1059,10 @@ msgstr "Lagerort für fertige Endprodukte"
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr "Status"
 
@@ -1097,8 +1098,8 @@ msgstr "Bauauftrag hat unvollständige Aufbauten"
 msgid "No build outputs have been created for this build order"
 msgstr "Es wurden keine Endprodukte für diesen Bauauftrag erstellt"
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr "Stücklisten-Position"
 
@@ -1135,23 +1136,31 @@ msgstr "Endprodukt kann bei Zuweisung nicht-verfolgter Teile nicht angegeben wer
 msgid "Allocation items must be provided"
 msgstr "Zuweisungen müssen angegeben werden"
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr "Bestand wurde Bauauftrag noch nicht vollständig zugewiesen"
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr "Zieldatum"
 
@@ -1250,7 +1259,7 @@ msgstr "Überfällig"
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr "Fertig"
@@ -1262,7 +1271,7 @@ msgstr "Fertig"
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr "Auftrag"
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr "Aufgegeben von"
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr "Unfertige Endprodukte"
 
@@ -1311,7 +1321,7 @@ msgstr "Zugewiesene Teile"
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr "Losnummer"
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr "Erstellt"
 
@@ -1340,7 +1350,7 @@ msgstr "Unter-Bauaufträge"
 msgid "Allocate Stock to Build"
 msgstr "Bestand Bauauftrag zuweisen"
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr "Bestandszuordnung aufheben"
 
@@ -1431,8 +1441,8 @@ msgstr "Fertiggestellte Endprodukte"
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr "Anhänge"
@@ -1441,27 +1451,27 @@ msgstr "Anhänge"
 msgid "Build Notes"
 msgstr "Bauauftrags-Notizen"
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr "Anmerkungen bearbeiten"
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr "Zuordnung abgeschlossen"
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr "Alle nicht verfolgten Lagerartikel wurden zugewiesen"
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr "Neuer Bauauftrag"
 
@@ -1485,13 +1495,9 @@ msgstr "Listen-Ansicht"
 msgid "Build Order Details"
 msgstr "Bauauftragdetails"
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr "Ausstehende Einträge"
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
-msgstr "Abgeschlossene Elemente"
+msgid "Completed Outputs"
+msgstr ""
 
 #: build/views.py:73
 msgid "Build was cancelled"
@@ -1538,760 +1544,768 @@ msgstr "{name.title()} Datei"
 msgid "Select {name} file to upload"
 msgstr "{name} Datei zum Hochladen auswählen"
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)"
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr "Einstellungs-Wert"
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr "Wert ist keine gültige Option"
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr "Wahrheitswert erforderlich"
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr "Nur Ganzzahl eingeben"
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr "Schlüsseltext muss eindeutig sein"
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr "Keine Gruppe"
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr "Neustart erforderlich"
 
-#: common/models.py:631
+#: common/models.py:635
 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:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr "InvenTree Instanzname"
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr "Kurze Beschreibung der Instanz"
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr "Name der Instanz verwenden"
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr "Den Namen der Instanz in der Titelleiste verwenden"
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr "Firmenname"
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr "interner Firmenname"
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr "Basis-URL"
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr "Basis-URL für dieses Instanz"
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr "Standardwährung"
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr "Standardwährung"
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr "Von URL herunterladen"
 
-#: common/models.py:672
+#: common/models.py:676
 msgid "Allow download of remote images and files from external URL"
 msgstr "Herunterladen von externen Bildern und Dateien von URLs erlaubt"
 
-#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Bacode-Feature verwenden"
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr "Barcode-Scanner Unterstützung"
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr "IPN Regex"
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "RegEx Muster für die Zuordnung von Teil-IPN"
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr "Mehrere Artikel mit gleicher IPN erlaubt"
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Mehrere Artikel mit gleicher IPN erlaubt"
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr "Ändern von IPN erlaubt"
 
-#: common/models.py:698
+#: common/models.py:702
 msgid "Allow changing the IPN value while editing a part"
 msgstr "Ändern der IPN während des Bearbeiten eines Teils erlaubt"
 
-#: common/models.py:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr "Teil-Stückliste kopieren"
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr "Stückliste von Teil kopieren wenn das Teil dupliziert wird "
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr "Teil-Parameter kopieren"
 
-#: common/models.py:712
+#: common/models.py:716
 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:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr "Teil-Testdaten kopieren"
 
-#: common/models.py:719
+#: common/models.py:723
 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:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr "Kategorie-Parametervorlage kopieren"
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr "Kategorie-Parameter Vorlagen kopieren wenn ein Teil angelegt wird"
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr "Vorlage"
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr "Teile sind standardmäßig Vorlagen"
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr "Baugruppe"
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr "Teile können standardmäßig aus anderen Teilen angefertigt werden"
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr "Komponente"
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr "Teile können standardmäßig in Baugruppen benutzt werden"
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr "Kaufbar"
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr "Artikel sind grundsätzlich kaufbar"
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr "Verkäuflich"
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr "Artikel sind grundsätzlich verkaufbar"
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr "Nachverfolgbar"
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr "Artikel sind grundsätzlich verfolgbar"
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr "Virtuell"
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr "Teile sind grundsätzlich virtuell"
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr "Import in Ansichten anzeigen"
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr "Importassistent in einigen Teil-Ansichten anzeigen"
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr "Preis in Formularen anzeigen"
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr "Teilpreis in einigen Formularen anzeigen"
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr "Preis in Stückliste anzeigen"
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr "Preisinformationen in Stücklisten Tabellen einbeziehen"
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr "Preisverlauf anzeigen"
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr "Historische Preise für Teil anzeigen"
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr "Verwandte Teile anzeigen"
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr "Verwandte Teile eines Teils anzeigen"
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr "Ausgangsbestand erstellen"
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr "Ausgangsbestand beim Erstellen von Teilen erstellen"
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr "Interne Preise"
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr "Interne Preise für Teile aktivieren"
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr "Interner Preis als Stückliste-Preis"
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr "Interner Preis (falls vorhanden) in Stücklisten-Preisberechnungen verwenden"
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr "Anzeigeformat für Teilenamen"
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr "Format für den Namen eines Teiles"
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr "Berichte aktivieren"
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr "Berichterstellung aktivieren"
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Entwickler-Modus"
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Berichte im Entwickler-Modus generieren (als HTML)"
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr "Seitengröße"
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr "Standardseitenformat für PDF-Bericht"
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr "Test-Berichte"
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr "Erstellung von Test-Berichten aktivieren"
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr "Bestands-Ablauf"
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr "Ablaufen von Bestand ermöglichen"
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr "Abgelaufenen Bestand verkaufen"
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr "Verkauf von abgelaufenem Bestand erlaubt"
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr "Bestands-Stehzeit"
 
-#: common/models.py:902
+#: common/models.py:906
 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:904
+#: common/models.py:908
 msgid "days"
 msgstr "Tage"
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr "Abgelaufenen Bestand verbauen"
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr "Verbauen von abgelaufenen Bestand erlaubt"
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr "Bestands-Eigentümerkontrolle"
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr "Eigentümerkontrolle für Lagerorte und Teile aktivieren"
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr "Bauauftrag-Referenz Präfix"
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr "Präfix für Bauauftrag-Referenz"
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr "Bauauftrag-Referenz RegEx"
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr "RegEx Muster für die Zuordnung von Bauauftrag-Referenzen"
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr "Auftrags-Referenz Präfix"
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr "Präfix für Auftrags-Referenz"
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr "Bestellungs-Referenz Präfix"
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr "Präfix für Bestellungs-Referenz"
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr "Passwort vergessen aktivieren"
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr "Passwort-vergessen-Funktion auf den Anmeldeseiten aktivieren"
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr "Anmeldung erlauben"
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr "Selbstregistrierung für Benutzer auf den Anmeldeseiten aktivieren"
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr "SSO aktivieren"
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr "SSO auf den Anmeldeseiten aktivieren"
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr "Email-Adresse erforderlich"
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr "Benutzer müssen bei der Registrierung eine E-Mail angeben"
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr "SSO-Benutzer automatisch ausfüllen"
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr "Benutzer-Details automatisch aus SSO-Konto ausfüllen"
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr "E-Mail zweimal"
 
-#: common/models.py:978
+#: common/models.py:982
 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:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr "Passwort zweimal"
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr "Bei der Registrierung den Benutzer zweimal nach dem Passwort fragen"
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr "Gruppe bei Registrierung"
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr "Gruppe der neue Benutzer bei der Registrierung zugewiesen werden"
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr "MFA erzwingen"
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr "Benutzer müssen Multifaktor-Authentifizierung verwenden."
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr "URL-Integration aktivieren"
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr "Plugins zum Hinzufügen von URLs aktivieren"
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr "Navigations-Integration aktivieren"
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr "Plugins zur Integration in die Navigation aktivieren"
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr "App-Integration aktivieren"
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr "Plugins zum Hinzufügen von Apps aktivieren"
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr "Terminplan-Integration aktivieren"
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr "Geplante Aufgaben aktivieren"
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr "Ereignis-Integration aktivieren"
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr "Plugins ermöglichen auf interne Ereignisse zu reagieren"
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)"
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr "Abonnierte Teile anzeigen"
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr "Zeige abonnierte Teile auf der Startseite"
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr "Abonnierte Kategorien anzeigen"
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr "Zeige abonnierte Teilkategorien auf der Startseite"
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr "Neueste Teile anzeigen"
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr "Zeige neueste Teile auf der Startseite"
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr "Aktuelle Teile-Stände"
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr "Anzahl der neusten Teile auf der Startseite"
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr "Nicht validierte Stücklisten anzeigen"
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr "Zeige Stücklisten, die noch nicht validiert sind, auf der Startseite"
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr "Neueste Bestandänderungen anzeigen"
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite"
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr "aktueller Bestand"
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr "Anzahl des geänderten Bestands auf der Startseite"
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr "Niedrigen Bestand anzeigen"
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr "Zeige geringen Bestand auf der Startseite"
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr "Lerren Bestand anzeigen"
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr "Zeige aufgebrauchte Lagerartikel auf der Startseite"
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr "Benötigten Bestand anzeigen"
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr "Zeige Bestand für Bauaufträge auf der Startseite"
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr "Abgelaufenen Bestand anzeigen"
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr "Zeige abgelaufene Lagerbestände auf der Startseite"
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr "Alten Bestand anzeigen"
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr "Zeige überfällige Lagerartikel auf der Startseite"
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr "Ausstehende Bauaufträge anzeigen"
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr "Zeige ausstehende Bauaufträge auf der Startseite"
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr "Zeige überfällige Bauaufträge"
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr "Zeige überfällige Bauaufträge auf der Startseite"
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr "Ausstehende POs anzeigen"
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr "Zeige ausstehende POs auf der Startseite"
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr "Überfällige POs anzeigen"
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr "Zeige überfällige POs auf der Startseite"
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr "Ausstehende SOs anzeigen"
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr "Zeige ausstehende SOs auf der Startseite"
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr "Überfällige SOs anzeigen"
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr "Zeige überfällige SOs auf der Startseite"
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr "Label inline anzeigen"
 
-#: common/models.py:1189
+#: common/models.py:1193
 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:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr "Berichte inline anzeigen"
 
-#: common/models.py:1196
+#: common/models.py:1200
 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:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr "Anzahl Suchergebnisse"
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr "Anzahl der Ergebnisse, die in der Vorschau angezeigt werden sollen"
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr "Suche Bestand anzeigen"
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr "Bestand in Suchvorschau anzeigen"
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr "Inaktive Teile ausblenden"
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr "Inaktive Teile in der Suchvorschau ausblenden"
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr "zeige Bestand in Eingabemasken"
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken"
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr "Esc-Taste schließt Formulare"
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr "Benutze die Esc-Taste, um Formulare zu schließen"
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr "Fixierter Navigationsleiste"
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr "Position der InvenTree Navigationsleiste am oberen Bildschirmrand fixieren"
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr "Datumsformat"
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr "Bevorzugtes Format für die Anzeige von Daten"
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr "Preisstaffelungs Anzahl"
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr "Preis"
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr "Stückpreis für die angegebene Anzahl"
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr "Endpunkt"
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr "Endpunkt, an dem dieser Webhook empfangen wird"
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr "Name für diesen Webhook"
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr "Name für diesen Webhook"
 msgid "Active"
 msgstr "Aktiv"
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr "Ist dieser Webhook aktiv"
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr "Token"
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr "Token für Zugang"
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr "Secret"
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr "Shared Secret für HMAC"
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr "Nachrichten-ID"
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr "Eindeutige Kennung für diese Nachricht"
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr "Host"
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr "Host von dem diese Nachricht empfangen wurde"
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr "Header"
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr "Header dieser Nachricht"
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr "Body"
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr "Body dieser Nachricht"
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr "Endpunkt, über den diese Nachricht empfangen wurde"
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr "Bearbeitet"
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr "Wurde die Arbeit an dieser Nachricht abgeschlossen?"
 
@@ -2463,7 +2477,7 @@ msgstr "Anlaufstelle"
 msgid "Link to external company information"
 msgstr "Link auf externe Firmeninformation"
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr "Bild"
 
@@ -2500,7 +2514,7 @@ msgstr "Währung"
 msgid "Default currency used for this company"
 msgstr "Standard-Währung für diese Firma"
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr "Basisteil"
@@ -2515,12 +2529,12 @@ msgstr "Teil auswählen"
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr "Hersteller"
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr "Hersteller auswählen"
 
@@ -2528,11 +2542,11 @@ msgstr "Hersteller auswählen"
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr "MPN"
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr "Hersteller-Teilenummer"
 
@@ -2557,8 +2571,8 @@ msgstr "Parametername"
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr "Wert"
 
@@ -2566,10 +2580,10 @@ msgstr "Wert"
 msgid "Parameter value"
 msgstr "Parameterwert"
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr "Einheiten"
 
@@ -2588,22 +2602,22 @@ msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren"
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr "Zulieferer"
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr "Zulieferer auswählen"
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr "SKU (Lagerbestandseinheit)"
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr "Lagerbestandseinheit (SKU) des Zulieferers"
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr "Zuliefererbeschreibung des Teils"
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr "Notiz"
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr "Basiskosten"
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr "Mindestpreis"
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr "Verpackungen"
 
@@ -2644,7 +2658,7 @@ msgstr "Verpackungen"
 msgid "Part packaging"
 msgstr "Teile-Verpackungen"
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr "Vielfache"
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr "Bild von URL herunterladen"
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr "Kunde"
@@ -2739,7 +2753,7 @@ msgstr "Neues Zuliefererteil anlegen"
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr "Neues Zuliefererteil"
 
@@ -2747,8 +2761,8 @@ msgstr "Neues Zuliefererteil"
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr "Optionen"
 
@@ -2776,7 +2790,7 @@ msgstr "Herstellerteile"
 msgid "Create new manufacturer part"
 msgstr "Neues Herstellerteil anlegen"
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr "Neues Herstellerteil"
 
@@ -2790,7 +2804,7 @@ msgstr "Zulieferer-Bestand"
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr "Neue Bestellung"
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr "Neuer Auftrag"
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr "Zugeordneter Bestand"
 
@@ -2840,13 +2854,13 @@ msgstr "Firmenbemerkungen"
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr "Zuliefererteil entfernen?"
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr "Alle ausgewählten Zulieferteile werden gelöscht"
 
@@ -2863,7 +2877,7 @@ msgstr "Hersteller"
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr "Teil bestellen"
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr "Zulieferer"
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr "Zuliefererteil entfernen"
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr "Löschen"
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr "Parameter"
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr "Parameter löschen"
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr "Parameter hinzufügen"
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr "Zugewiesene Lagerartikel"
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr "Zuliefererteil"
 
@@ -2979,7 +2993,7 @@ msgstr "Neuen Lagerartikel hinzufügen"
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr "Neuer Lagerartikel"
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr "Zulieferer-Bestellungen"
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr "Teil bestellen"
 
@@ -3030,10 +3044,10 @@ msgstr "Preisstaffel löschen"
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr "Bestand"
 
@@ -3056,7 +3070,7 @@ msgstr "Bepreisung"
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr "Lagerartikel"
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr "Lieferantenteil muss mit Lieferant übereinstimmen"
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr "Bestellung"
 
@@ -3328,8 +3342,8 @@ msgstr "Bestellung"
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr "Bestellung"
 
@@ -3339,7 +3353,7 @@ msgstr "Zuliefererteil"
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr "Empfangen"
@@ -3348,9 +3362,9 @@ msgstr "Empfangen"
 msgid "Number of items received"
 msgstr "Empfangene Objekt-Anzahl"
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr "Preis"
 
@@ -3606,7 +3620,7 @@ msgstr "Bestellungsbeschreibung"
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr "Bestellstatus"
 
@@ -3679,9 +3693,9 @@ msgstr "Zulieferer-Teil auswählen"
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr "Zeile entfernen"
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr "Ausstehende Sendungen"
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr "Aktionen"
 
@@ -3930,35 +3944,51 @@ msgstr "Stückpreis für {part} auf {price} aktualisiert"
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr "{part} Stückpreis auf {price} und Menge auf {qty} aktualisiert"
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr "Gültig"
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr "Gesamte Stückliste validieren"
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr "Diese Option muss ausgewählt werden"
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr "Muss größer als 0 sein"
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr "Muss eine gültige Nummer sein"
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr "Standort für anfänglichen Bestand angeben"
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr "Dieses Feld ist erforderlich"
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr "Standard-Lagerort"
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr "Verfügbarer Bestand"
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr "Bestellt"
 
@@ -3992,448 +4022,448 @@ msgstr "Parameter-Vorlage zu allen Kategorien hinzufügen"
 msgid "Input quantity for price calculation"
 msgstr "Menge für die Preisberechnung"
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr "Standard-Lagerort für Teile dieser Kategorie"
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr "Standard Stichwörter"
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr "Standard-Stichworte für Teile dieser Kategorie"
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "Teil-Kategorie"
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr "Teil-Kategorien"
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr "Teile"
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr "Ungültige Auswahl für übergeordnetes Teil"
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr "Teil '{p1}' wird in Stückliste für Teil '{p2}' benutzt (rekursiv)"
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr "Nächste verfügbare Seriennummern wären"
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr "Nächste verfügbare Seriennummer ist"
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr "Die neuste Seriennummer ist"
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "Doppelte IPN in den Teil-Einstellungen nicht erlaubt"
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr "Name des Teils"
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr "Ist eine Vorlage"
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr "Ist dieses Teil eine Vorlage?"
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr "Ist dieses Teil eine Variante eines anderen Teils?"
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr "Variante von"
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr "Beschreibung des Teils"
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr "Schlüsselwörter"
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern"
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr "Kategorie"
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr "Teile-Kategorie"
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr "IPN (Interne Produktnummer)"
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr "Interne Teilenummer"
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr "Revisions- oder Versionsnummer"
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr "Revision"
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr "Wo wird dieses Teil normalerweise gelagert?"
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr "Standard Zulieferer"
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr "Standard Zuliefererteil"
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr "Standard Ablaufzeit"
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr "Ablauf-Zeit (in Tagen) für Bestand dieses Teils"
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr "Minimaler Bestand"
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr "Minimal zulässiger Bestand"
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr "Stock Keeping Units (SKU) für dieses Teil"
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?"
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr "Kann dieses Teil zum Bauauftrag von anderen genutzt werden?"
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr "Hat dieses Teil Tracking für einzelne Objekte?"
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?"
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr "Kann dieses Teil an Kunden verkauft werden?"
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr "Ist dieses Teil aktiv?"
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr "Ist dieses Teil virtuell, wie zum Beispiel eine Software oder Lizenz?"
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr "Bemerkungen - unterstüzt Markdown-Formatierung"
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr "Prüfsumme der Stückliste"
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr "Prüfsumme der Stückliste gespeichert"
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr "Stückliste kontrolliert von"
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr "BOM Kontrolldatum"
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr "Erstellungs-Nutzer"
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr "Mehrere verkaufen"
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr "Test-Vorlagen können nur für verfolgbare Teile angelegt werden"
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr "Ein Test mit diesem Namen besteht bereits für dieses Teil"
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr "Test-Name"
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr "Namen für diesen Test eingeben"
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr "Test-Beschreibung"
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr "Beschreibung für diesen Test eingeben"
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr "Benötigt"
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr "Muss dieser Test erfolgreich sein?"
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr "Erfordert Wert"
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr "Muss für diesen Test ein Wert für das Test-Ergebnis eingetragen werden?"
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr "Anhang muss eingegeben werden"
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr "Muss für diesen Test ein Anhang für das Test-Ergebnis hinzugefügt werden?"
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr "Ungültiges Zeichen im Vorlagename ({c})"
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr "Vorlagen-Name des Parameters muss eindeutig sein"
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr "Name des Parameters"
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr "Einheit des Parameters"
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr "Ausgangsteil"
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr "Parameter Vorlage"
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr "Wert"
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr "Parameter Wert"
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr "Standard-Wert"
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr "Standard Parameter Wert"
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr "Teilnummer oder Teilname"
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr "Teil-ID"
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr "Eindeutige Teil-ID"
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr "Name des Teils"
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr "Teil-ID"
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr "IPN-Wert des Teils"
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr "Stufe"
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr "Stücklistenebene"
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr "Ausgangsteil auswählen"
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr "Untergeordnetes Teil"
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr "Teil für die Nutzung in der Stückliste auswählen"
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil"
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr "Optional"
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr "Diese Stücklisten-Position ist optional"
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr "Überschuss"
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr "Geschätzter Ausschuss (absolut oder prozentual)"
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr "Referenz der Postion auf der Stückliste"
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr "Notizen zur Stücklisten-Position"
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr "Prüfsumme"
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr "Prüfsumme der Stückliste"
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr "Geerbt"
 
-#: part/models.py:2741
+#: part/models.py:2749
 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:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr "Varianten zulassen"
 
-#: part/models.py:2747
+#: part/models.py:2755
 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:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr "Menge muss eine Ganzzahl sein"
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr "Zuliefererteil muss festgelegt sein"
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr "Stücklisten Ersatzteile"
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr "Ersatzteil kann nicht identisch mit dem Hauptteil sein"
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr "Übergeordnete Stücklisten Position"
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr "Ersatzteil"
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr "Teil 1"
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr "Teil 2"
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr "verknüpftes Teil auswählen"
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr "Fehler bei Verwandschaft: Ist das Teil mit sich selbst verwandt oder ist das die Verwandtschaft nicht eindeutig?"
 
@@ -4532,7 +4562,7 @@ msgstr "Die Stückliste für <em>%(part)s</em> wurde zuletzt von %(checker)s am
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr "Die Stückliste für <em>%(part)s</em> wurde noch nicht kontrolliert."
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr "Stücklisten-Aktionen"
 
@@ -4641,46 +4671,43 @@ msgstr "Ein weiteres Teil anlegen"
 msgid "Part created successfully"
 msgstr "Teil erfolgreich angelegt"
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
-msgstr "Sind Sie sicher, dass Sie diese Kategorie löschen wollen"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
+msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
-msgstr "Diese Kategorie enthält %(count)s Unter-Kategorien"
+msgid "This category contains %(n)s child categories"
+msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
-msgstr "Wenn diese Kategorie gelöscht wird, werden alle Unter-Kat. verschoben nach"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
+msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
-msgstr "Kategorie"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
+msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
-msgstr "oberste Teil-Kategorie"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
+msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
-msgstr "Diese Kategorie enthält %(count)s Teile"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
+msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr "Wenn diese Kat. gelöscht wird, werden diese Teile in die übergeordnete Kategorie %(path)s verschoben"
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
-msgstr "Wenn diese Kat. gelöscht wird, werden diese Teile in die oberste Kat. verschoben"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
+msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr "Teile importieren"
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr "Teil duplizieren"
 
@@ -4708,150 +4735,150 @@ msgstr "%(full_name)s - <em>%(desc)s</em> (%(match_per)s%% übereinstimmend)"
 msgid "Part Stock"
 msgstr "Teilbestand"
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr "Teil-Bestandszuordnungen"
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr "Teil Test-Vorlagen"
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr "Test Vorlage hinzufügen"
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr "Verkaufsauftragszuweisungen"
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr "Teil Varianten"
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr "Neue Variante anlegen"
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr "neue Variante anlegen"
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr "Parameter hinzufügen"
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr "Verknüpfte Teile"
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr "Verknüpftes Teil hinzufügen"
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr "Stückliste"
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr "Export-Aktionen"
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr "Stückliste exportieren"
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr "Stücklisten-Bericht drucken"
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr "Stückliste hochladen"
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr "Stückliste kopieren"
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr "Stückliste überprüfen"
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr "Neue Stücklisten-Position"
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr "Stücklisten-Position hinzufügen"
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr "Baugruppen"
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr "Gefertigte Teile"
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr "Bauauftragszuweisungen"
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr "Zulieferer"
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr "Teil-Hersteller"
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr "Herstellerteile löschen"
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr "Ausgewählte Stücklistenpositionen löschen?"
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr "Alle ausgewählte Stücklistenpositionen werden gelöscht"
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr "Stücklisten-Position anlegen"
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr "verknüpftes Teil"
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr "verknüpftes Teil hinzufügen"
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr "Testergebnis-Vorlage hinzufügen"
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr "Teilenotizen bearbeiten"
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr "Stückpreis Einkauf - %(currency)s"
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr "Stückpreis Differenz - %(currency)s"
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr "Stückpreis Zulieferer - %(currency)s"
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr "Stückpreis - %(currency)s"
@@ -4996,7 +5023,7 @@ msgstr "Teil ist virtuell (kein physisches Teil)"
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr "Inaktiv"
 
@@ -5031,8 +5058,8 @@ msgstr "Zu Bauaufträgen zugeordnet"
 msgid "Can Build"
 msgstr "Herstellbar"
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr "Im Bau"
 
@@ -5131,7 +5158,11 @@ msgstr "Benutzt in"
 msgid "Allocations"
 msgstr "Zuweisungen"
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr "Testvorlagen"
 
@@ -5249,8 +5280,8 @@ msgid "Set category for the following parts"
 msgstr "Kategorie für Teile setzen"
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr "Kein Bestand"
 
@@ -5365,7 +5396,7 @@ msgstr "Teilparametervorlage bearbeiten"
 msgid "Delete Part Parameter Template"
 msgstr "Teilparametervorlage löschen"
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr "Teil-Kategorie bearbeiten"
 
@@ -5603,12 +5634,12 @@ msgid "Stock Item Test Report"
 msgstr "Lagerartikel Test-Bericht"
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr "Seriennummer"
 
@@ -5617,19 +5648,19 @@ msgid "Test Results"
 msgstr "Testergebnisse"
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr "Test"
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr "Ergebnis"
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr "Datum"
 
@@ -5647,8 +5678,8 @@ msgid "Installed Items"
 msgstr "Verbaute Objekte"
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr "Seriennummer"
 
@@ -5664,9 +5695,9 @@ 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/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr "Ablaufdatum"
 
@@ -5706,228 +5737,228 @@ msgstr "nicht mehr verbauen bestätigen"
 msgid "Confirm removal of installed stock items"
 msgstr "Entfernen der verbauten Lagerartikel bestätigen"
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr "Besitzer"
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr "Besitzer auswählen"
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr "Ein Lagerartikel mit dieser Seriennummer existiert bereits"
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr "Teile-Typ ('{pf}') muss {pe} sein"
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr "Anzahl muss für Objekte mit Seriennummer 1 sein"
 
-#: stock/models.py:474
+#: stock/models.py:489
 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:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr "Teil kann nicht zu sich selbst gehören"
 
-#: stock/models.py:502
+#: stock/models.py:517
 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:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr "Referenz verweist nicht auf das gleiche Teil"
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr "Eltern-Lagerartikel"
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr "Basis-Teil"
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr "Passendes Zuliefererteil für diesen Lagerartikel auswählen"
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr "Bestand-Lagerort"
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr "Wo wird dieses Teil normalerweise gelagert?"
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr "Die Verpackung dieses Lagerartikel ist gelagert in"
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr "verbaut in"
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr "Ist dieses Teil in einem anderen verbaut?"
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr "Seriennummer für dieses Teil"
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr "Losnummer für diesen Lagerartikel"
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr "Bestand"
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr "Quellbau"
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr "Bauauftrag für diesen Lagerartikel"
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr "Quelle Bestellung"
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr "Bestellung für diesen Lagerartikel"
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr "Ziel-Auftrag"
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr "Ablaufdatum für Lagerartikel. Bestand wird danach als abgelaufen gekennzeichnet"
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr "Löschen wenn leer"
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr "Diesen Lagerartikel löschen wenn der Bestand aufgebraucht ist"
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr "Lagerartikel-Notizen"
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr "Preis für eine Einheit bei Einkauf"
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr "Teil ist nicht verfolgbar"
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr "Anzahl muss eine Ganzzahl sein"
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr "Anzahl darf nicht die verfügbare Anzahl überschreiten ({n})"
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr "Seriennummern muss eine Liste von Ganzzahlen sein"
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr "Anzahl stimmt nicht mit den Seriennummern überein"
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr "Seriennummern {exists} existieren bereits"
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr "Artikel wurde einem Kundenauftrag zugewiesen"
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr "Lagerartikel ist in anderem Element verbaut"
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr "Lagerartikel enthält andere Artikel"
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr "Artikel wurde einem Kunden zugewiesen"
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr "Lagerartikel wird aktuell produziert"
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr "Nachverfolgbare Lagerartikel können nicht zusammengeführt werden"
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr "Artikel duplizeren"
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr "Lagerartikel müssen auf dasselbe Teil verweisen"
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr "Lagerartikel müssen auf dasselbe Lieferantenteil verweisen"
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr "Status-Codes müssen zusammenpassen"
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 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:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr "Eintrags-Notizen"
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr "Wert muss für diesen Test angegeben werden"
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr "Anhang muss für diesen Test hochgeladen werden"
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr "Name des Tests"
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr "Testergebnis"
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr "Test Ausgabe Wert"
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr "Test Ergebnis Anhang"
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr "Test Notizen"
 
@@ -6081,11 +6112,11 @@ msgstr "Testdaten hinzufügen"
 msgid "Installed Stock Items"
 msgstr "Installierte Lagerartikel"
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr "Lagerartikel installieren"
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr "Testergebnis hinzufügen"
 
@@ -6210,7 +6241,7 @@ msgid "Stale"
 msgstr "überfällig"
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr "Zuletzt aktualisiert"
 
@@ -6247,7 +6278,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr "Diesesr Lagerartikel ist serialisiert. Es hat eine eindeutige Seriennummer und die Anzahl kann nicht angepasst werden."
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr "Kein Lagerort gesetzt"
 
@@ -6276,7 +6307,7 @@ msgstr "Sie gehören nicht zu den Eigentümern dieses Objekts und können es nic
 msgid "Read only"
 msgstr "Nur Leserechte"
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr "Bestandsstatus bearbeiten"
 
@@ -6357,10 +6388,38 @@ msgstr "Druck Aktionen"
 msgid "Print labels"
 msgstr "Label drucken"
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr "Sind Sie sicher, dass Sie diesen Lagerort löschen wollen?"
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr "Lade..."
@@ -6442,7 +6501,7 @@ msgstr "Lagerartikel-QR-Code"
 msgid "Uninstall Stock Items"
 msgstr "Lagerartikel deinstallieren"
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr "Bestands-Anpassung bestätigen"
 
@@ -6450,7 +6509,7 @@ msgstr "Bestands-Anpassung bestätigen"
 msgid "Uninstalled stock items"
 msgstr "Lagerartikel deinstalliert"
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr "Lagerartikel bearbeiten"
 
@@ -6462,7 +6521,7 @@ msgstr "Neuen Lagerort erstellen"
 msgid "Create new Stock Item"
 msgstr "Neuen Lagerartikel hinzufügen"
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr "Bestand duplizieren"
 
@@ -7059,60 +7118,60 @@ msgstr "%(time)s vor"
 msgid "Do you really want to remove the selected email address?"
 msgstr "Möchten Sie die ausgewählte E-Mail-Adresse wirklich entfernen?"
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr "Anzeige-Einstellungen"
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr "Stil auswählen"
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr "Design auswählen"
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr "Spracheinstellung"
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr "Sprache festlegen"
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr "%(lang_translated)s%% übersetzt"
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr "Keine Übersetzungen verfügbar"
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr "Sprache festlegen"
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr "Einige Sprachen sind nicht vollständig übersetzt"
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr "Zeige nur ausreichende"
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr "und versteckt."
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr "Auch unvollständige anzeigen"
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr "Hilf bei der Übersetzung!"
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr "Die Übersetzung von InvenTree wird <a href=\"%(link)s\">von Nutzern via Crowdin</a> betrieben. Wir ermutigen zur und freuen uns über jede Mithilfe."
@@ -7416,8 +7475,8 @@ msgstr "Benötigte Menge"
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr "Verfügbar"
@@ -7609,7 +7668,7 @@ msgstr "Dadurch wird die Verknüpfung zwischen diesem Lagerartikel und dem Barco
 msgid "Unlink"
 msgstr "Entfernen"
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr "Lagerartikel entfernen"
 
@@ -7749,7 +7808,7 @@ msgstr "Stücklisten Ersatzteile bearbeiten"
 msgid "Substitutes Available"
 msgstr "Ersatzteile verfügbar"
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr "Varianten erlaubt"
 
@@ -7801,7 +7860,7 @@ msgstr "Keine Stücklisten-Position(en) gefunden"
 msgid "Are you sure you want to delete this BOM item?"
 msgstr "Sind Sie sicher, dass Sie diese Stücklisten-Position löschen wollen?"
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr "benötigtes Teil"
 
@@ -7915,137 +7974,141 @@ msgstr "Standort nicht angegeben"
 msgid "No active build outputs found"
 msgstr "Keine aktiven Endprodukte gefunden"
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr "Bestands-Zuordnung bearbeiten"
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr "Bestands-Zuordnung löschen"
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr "Zuordnung bearbeiten"
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr "Zuordnung entfernen"
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr "Ersatzteile verfügbar"
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr "Anzahl pro"
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr "Zugeordnet"
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr "Bestand bauen"
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr "Bestand bestellen"
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr "Bestand zuweisen"
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr "Teile auswählen"
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr "Sie müssen mindestens ein Teil auswählen"
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr "Anzahl für Bestandszuordnung eingeben"
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 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:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr "Bestandszuordnung bestätigen"
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr "Lagerartikel für Bauauftrag zuweisen"
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr "Keine passenden Lagerstandorte"
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr "Keine passenden Lagerbestände"
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr "Keine Bauaufträge passen zur Anfrage"
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr "Auswählen"
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr "Bauauftrag ist überfällig"
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr "Keine Benutzerinformation"
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr "Keine Information"
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr "Keine Teile zugeordnet zu"
 
@@ -8110,34 +8173,34 @@ msgid "No manufacturer parts found"
 msgstr "Keine Herstellerteile gefunden"
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr "Vorlagenteil"
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr "Baugruppe"
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr "Keine Parameter gefunden"
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr "Parameter bearbeiten"
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr "Parameter löschen"
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr "Parameter bearbeiten"
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr "Parameter löschen"
 
@@ -8246,7 +8309,7 @@ msgid "NO"
 msgstr "NEIN"
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr "Lagerartikel auswählen"
 
@@ -8443,7 +8506,7 @@ msgstr "Seriennummern hinzufügen"
 msgid "Quantity to receive"
 msgstr "Zu erhaltende Menge"
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr "Status"
 
@@ -8467,7 +8530,7 @@ msgstr "Empfang der Teile bestätigen"
 msgid "Receive Purchase Order Items"
 msgstr "Bestellpositionen erhalten"
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr "Keine Bestellungen gefunden"
 
@@ -8496,7 +8559,7 @@ msgid "Total"
 msgstr "Summe"
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr "Stück-Preis"
 
@@ -8505,11 +8568,11 @@ msgid "Total Price"
 msgstr "Gesamtpreis"
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr "Diese Position ist überfällig"
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr "Position empfangen"
 
@@ -8590,7 +8653,7 @@ msgid "Delete Stock Allocation"
 msgstr "Bestands-Zuordnung löschen"
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr "an Kunde versand"
 
@@ -8630,237 +8693,245 @@ msgstr "Stückpreis aktualisieren"
 msgid "No matching line items"
 msgstr "Keine passenden Positionen gefunden"
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr "Teileigenschaften"
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr "Erstellungsoptionen für Teile"
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr "Einstellungen für Teilkopien"
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr "Zuliefereroptionen"
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr "Teil-Kategorie hinzufügen"
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr "Anfänglichen Bestand erstellen"
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr "Anfänglichen Bestand für dieses Teil erstellen"
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr "Start-Bestandsmenge"
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr "Menge des anfänglichen Bestands für dieses Teil angeben"
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr "Zielstandort auswählen"
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr "Kategorieparameter kopieren"
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr "Parametervorlagen aus der ausgewählten Bauteilkategorie kopieren"
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr "Zuliefererdaten hinzufügen"
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr "Erstelle ersten Lieferanten für dieses Teil"
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr "Bild kopieren"
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr "Bild vom Originalteil kopieren"
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr "Stückliste vom Originalteil kopieren"
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr "Parameter kopieren"
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr "Parameterdaten vom Originalteil kopieren"
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr "Übergeordnete Teilkategorie"
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr "Teil bearbeiten"
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr "Teil bearbeitet"
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr "Teil-Variante anlegen"
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr "Sie haben Benachrichtigungen für dieses Teil abonniert"
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr "Sie haben Benachrichtigungen für dieses Teil abonniert"
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr "Benachrichtigungen für dieses Teil abonnieren"
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr "Sie haben Benachrichtigungen für dieses Teil abgemeldet"
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr "Die Stückliste zu validieren markiert jede Zeile als gültig"
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr "Stückliste prüfen"
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr "überprüfte Stückliste"
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr "Stückliste kopieren"
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr "Nachverfolgbares Teil"
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr "virtuelles Teil"
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr "Abonnierter Teil"
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr "Verkäufliches Teil"
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr "Keine Varianten gefunden"
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr "Teile-Beziehung löschen"
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr "Teile-Beziehung löschen"
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr "Keine Teile gefunden"
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr "Keine Kategorie"
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr "Bestand niedrig"
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr "Listenansicht"
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr "Rasteransicht"
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr "Baumansicht"
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr "Abonnierte Kategorie"
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr "Pfad"
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr "Keine zur Anfrage passenden Testvorlagen"
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr "Testergebnis bearbeiten"
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr "Testergebnis löschen"
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr "Dieses Testergebnis ist für ein Hauptteil"
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr "Testergebnis-Vorlage bearbeiten"
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr "Testergebnis-Vorlage löschen"
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr "Keine ${human_name} Informationen gefunden"
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr "${human_name} bearbeiten"
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr "${human_name} löschen"
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr "Einzelpreis"
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr "Einzelpreisdifferenz"
 
@@ -8962,328 +9033,332 @@ msgstr "Ausgangsmenge für diesen Lagerartikel eingeben"
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr "Seriennummern für neue Lagerartikel eingeben (oder leer lassen)"
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr "Neuer Lagerartikel erstellt"
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr "Mehrere Lagerartikel erstellt"
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr "Seriennummer finden"
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr "Seriennummer eingeben"
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr "Eine Seriennummer eingeben"
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr "Keine passende Seriennummer"
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr "Mehrere Ergebnisse gefunden"
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr "Bestand Zuweisung bestätigen"
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr "Einem Kunden zuordnen"
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr "Achtung: Das Zusammenführen kann nicht rückgängig gemacht werden"
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr "Einige Informationen gehen verloren, wenn Artikel zusammengeführt werden"
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr "Lagerartikelverlauf wird für zusammengeführte Lagerartikel gelöscht"
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr "Lieferantenteil-Informationen werden für zusammengeführte Artikel gelöscht"
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr "Zusammenführung der Artikel bestätigen"
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr "Artikel zusammenführen"
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr "Bestand verschieben"
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr "Verschieben"
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr "Bestand zählen"
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr "Anzahl"
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr "Bestand entfernen"
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr "Entfernen"
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr "Bestand hinzufügen"
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr "Hinzufügen"
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr "Bestand löschen"
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr "Menge von serialisiertem Bestand kann nicht bearbeitet werden"
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr "Bestandsanzahl angeben"
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr "Sie müssen mindestens einen Lagerartikel auswählen"
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr "ERFOLGREICH"
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr "FEHLGESCHLAGEN"
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr "KEIN ERGEBNIS"
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr "Test bestanden"
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr "Testergebnis hinzufügen"
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr "Keine Testergebnisse gefunden"
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr "Testdatum"
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr "Testergebnis bearbeiten"
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr "Testergebnis löschen"
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr "In Arbeit"
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr "In Lagerartikel installiert"
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr "Auftrag zugewiesen"
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr "Kein Lagerort gesetzt"
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr "Lagerartikel wird produziert"
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr "Lagerartikel wurde Auftrag zugewiesen"
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr "Lagerartikel wurde Kunden zugewiesen"
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr "Lagerartikel ist abgelaufen"
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr "Lagerartikel läuft demnächst ab"
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr "Serialisierter Lagerartikel wurde zugewiesen"
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr "Lagerartikel wurde vollständig zugewiesen"
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr "Lagerartikel wurde teilweise zugewiesen"
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr "Lagerartikel in anderem Element verbaut"
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr "Lagerartikel abgewiesen"
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr "Lagerartikel verloren"
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr "Lagerartikel zerstört"
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr "gelöscht"
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr "Inventur"
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr "Zuliefererteil nicht angegeben"
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr "Keine zur Anfrage passenden Lagerartikel"
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr "Teile"
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr "lose"
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr "Lagerorte"
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr "unbekannter Lagerort"
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr "Status setzen"
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr "Status Code setzen"
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr "Status Code muss ausgewählt werden"
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr "Zugewiesene Menge"
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr "Details"
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr "Standort nicht mehr vorhanden"
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr "Bestellung existiert nicht mehr"
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr "Kunde existiert nicht mehr"
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr "Lagerartikel existiert nicht mehr"
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr "Hinzugefügt"
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr "Entfernt"
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr "Tracking-Eintrag bearbeiten"
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr "Tracking-Eintrag löschen"
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr "Keine installierten Elemente"
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr "Lagerartikel entfernen"
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr "Einen weiteren Lagerartikel in dieses Teil installiert"
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 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:2933
+#: templates/js/translated/stock.js:2943
 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:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr "Dieser Lagerartikel ist aktuell vorhanden"
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr "Der Lagerartikel ist serialisiert und gehört nicht zu einem anderen Teil"
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr "Teil zur Installation auswählen"
 
diff --git a/InvenTree/locale/el/LC_MESSAGES/django.po b/InvenTree/locale/el/LC_MESSAGES/django.po
index 56ce7113b1..efa044462b 100644
--- a/InvenTree/locale/el/LC_MESSAGES/django.po
+++ b/InvenTree/locale/el/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Greek\n"
 "Language: el_GR\n"
@@ -122,7 +122,7 @@ msgstr ""
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr ""
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr ""
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr ""
 
@@ -152,11 +152,11 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr ""
 
@@ -193,17 +193,17 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr ""
 
@@ -212,7 +212,7 @@ msgstr ""
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr ""
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr ""
 
@@ -240,7 +240,7 @@ msgstr ""
 msgid "parent"
 msgstr ""
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr ""
 
@@ -501,7 +501,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr ""
 
@@ -648,7 +648,7 @@ msgstr ""
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr ""
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr ""
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr ""
@@ -692,10 +692,10 @@ msgstr ""
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr ""
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr ""
 
@@ -733,8 +733,8 @@ msgstr ""
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr ""
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr ""
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr ""
 
@@ -783,7 +783,7 @@ msgstr ""
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr ""
@@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
 #: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr ""
 
@@ -805,7 +805,7 @@ msgstr ""
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr ""
 
@@ -816,9 +816,9 @@ msgstr ""
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr ""
 
@@ -829,7 +829,7 @@ msgstr ""
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr ""
@@ -839,17 +839,17 @@ msgstr ""
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr ""
 
@@ -869,69 +869,69 @@ msgstr ""
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1168
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1199
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1256
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr ""
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr ""
 
@@ -998,7 +999,7 @@ msgstr ""
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr ""
 
@@ -1042,12 +1043,12 @@ msgstr ""
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr ""
 
@@ -1058,10 +1059,10 @@ msgstr ""
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr ""
 
@@ -1097,8 +1098,8 @@ msgstr ""
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr ""
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr ""
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr ""
 
@@ -1250,7 +1259,7 @@ msgstr ""
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr ""
@@ -1262,7 +1271,7 @@ msgstr ""
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr ""
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr ""
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr ""
 
@@ -1311,7 +1321,7 @@ msgstr ""
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr ""
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr ""
 
@@ -1340,7 +1350,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1431,8 +1441,8 @@ msgstr ""
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr ""
@@ -1441,27 +1451,27 @@ msgstr ""
 msgid "Build Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr ""
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr ""
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr ""
 
@@ -1485,12 +1495,8 @@ msgstr ""
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr ""
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
+msgid "Completed Outputs"
 msgstr ""
 
 #: build/views.py:73
@@ -1538,760 +1544,768 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr ""
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:631
+#: common/models.py:635
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr ""
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:672
+#: common/models.py:676
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr ""
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:698
+#: common/models.py:702
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:712
+#: common/models.py:716
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:719
+#: common/models.py:723
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr ""
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr ""
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr ""
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:904
+#: common/models.py:908
 msgid "days"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1193
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1200
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2463,7 +2477,7 @@ msgstr ""
 msgid "Link to external company information"
 msgstr ""
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr ""
 
@@ -2500,7 +2514,7 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr ""
@@ -2515,12 +2529,12 @@ msgstr ""
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr ""
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr ""
 
@@ -2528,11 +2542,11 @@ msgstr ""
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr ""
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr ""
 
@@ -2557,8 +2571,8 @@ msgstr ""
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr ""
 
@@ -2566,10 +2580,10 @@ msgstr ""
 msgid "Parameter value"
 msgstr ""
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr ""
 
@@ -2588,22 +2602,22 @@ msgstr ""
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr ""
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr ""
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr ""
 
@@ -2644,7 +2658,7 @@ msgstr ""
 msgid "Part packaging"
 msgstr ""
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr ""
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr ""
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr ""
@@ -2739,7 +2753,7 @@ msgstr ""
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr ""
 
@@ -2747,8 +2761,8 @@ msgstr ""
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr ""
 
@@ -2776,7 +2790,7 @@ msgstr ""
 msgid "Create new manufacturer part"
 msgstr ""
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr ""
 
@@ -2790,7 +2804,7 @@ msgstr ""
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr ""
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr ""
 
@@ -2840,13 +2854,13 @@ msgstr ""
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr ""
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
@@ -2863,7 +2877,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr ""
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr ""
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr ""
 
@@ -2979,7 +2993,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr ""
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr ""
 
@@ -3030,10 +3044,10 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr ""
 
@@ -3056,7 +3070,7 @@ msgstr ""
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr ""
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr ""
 
@@ -3328,8 +3342,8 @@ msgstr ""
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr ""
 
@@ -3339,7 +3353,7 @@ msgstr ""
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr ""
@@ -3348,9 +3362,9 @@ msgstr ""
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr ""
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr ""
 
@@ -3679,9 +3693,9 @@ msgstr ""
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr ""
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr ""
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr ""
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr ""
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr ""
 
@@ -3992,448 +4022,448 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr ""
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr ""
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr ""
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr ""
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr ""
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr ""
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr ""
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr ""
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr ""
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr ""
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr ""
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr ""
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2741
+#: part/models.py:2749
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:2747
+#: part/models.py:2755
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
 msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
+msgid "This category contains %(n)s child categories"
 msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
 msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
 msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
 msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
 msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr ""
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr ""
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr ""
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr ""
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr ""
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr ""
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr ""
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr ""
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr ""
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr ""
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr ""
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr ""
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr ""
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr ""
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr ""
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr ""
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr ""
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr ""
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr ""
 
@@ -5363,7 +5394,7 @@ msgstr ""
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr ""
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr ""
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr ""
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr ""
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr ""
 
@@ -5704,228 +5735,228 @@ msgstr ""
 msgid "Confirm removal of installed stock items"
 msgstr ""
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:474
+#: stock/models.py:489
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr ""
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr ""
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr ""
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr ""
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr ""
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr ""
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr ""
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr ""
 msgid "Print labels"
 msgstr ""
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr ""
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr ""
 
@@ -6448,7 +6507,7 @@ msgstr ""
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr ""
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr ""
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr ""
@@ -7607,7 +7666,7 @@ msgstr ""
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr ""
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr ""
 
@@ -7913,137 +7972,141 @@ msgstr ""
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr ""
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr ""
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr ""
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr ""
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr ""
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr ""
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr ""
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr ""
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr ""
 
@@ -8628,237 +8691,245 @@ msgstr ""
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr ""
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr ""
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr ""
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr ""
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr ""
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr ""
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr ""
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr ""
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr ""
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr ""
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr ""
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr ""
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr ""
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr ""
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr ""
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr ""
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr ""
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr ""
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr ""
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr ""
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr ""
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr ""
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr ""
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr ""
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr ""
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr ""
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr ""
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr ""
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr ""
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr ""
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr ""
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr ""
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr ""
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr ""
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr ""
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr ""
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr ""
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr ""
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr ""
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr ""
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr ""
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po
index 5a98361692..46ffeff58c 100644
--- a/InvenTree/locale/es/LC_MESSAGES/django.po
+++ b/InvenTree/locale/es/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Spanish\n"
 "Language: es_ES\n"
@@ -122,7 +122,7 @@ msgstr "Archivo no encontrado"
 msgid "Missing external link"
 msgstr "Falta enlace externo"
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr "Archivo adjunto"
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr "Seleccionar archivo para adjuntar"
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr "Enlace"
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr "Enlace a URL externa"
 
@@ -152,11 +152,11 @@ msgstr "Comentario"
 msgid "File comment"
 msgstr "Comentario del archivo"
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr "Usuario"
 
@@ -193,17 +193,17 @@ msgstr "Error al cambiar el nombre del archivo"
 msgid "Invalid choice"
 msgstr "Selección no válida"
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr "Nombre"
 
@@ -212,7 +212,7 @@ msgstr "Nombre"
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr "Nombre"
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr "Descripción"
 
@@ -240,7 +240,7 @@ msgstr "Descripción (opcional)"
 msgid "parent"
 msgstr "padre"
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr "Debe ser un numero valido"
 
@@ -501,7 +501,7 @@ msgstr "Separar del elemento principal"
 msgid "Split child item"
 msgstr "Dividir elemento secundario"
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr "Artículos de stock combinados"
 
@@ -648,7 +648,7 @@ msgstr "Opción no válida para la construcción padre"
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr "Construir órden"
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr "Número de orden de construcción o armado"
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr "Referencia"
@@ -692,10 +692,10 @@ msgstr "Orden de Construcción o Armado a la que se asigna"
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr "Orden de Construcción o Armado a la que se asigna"
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr "Parte"
 
@@ -733,8 +733,8 @@ msgstr "Referencia de orden de venta"
 msgid "SalesOrder to which this build is allocated"
 msgstr "Orden de Venta a la que se asigna"
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr "Ubicación de la fuente"
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr "Código de estado de construcción"
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr "Numero de lote"
 
@@ -783,7 +783,7 @@ msgstr "Numero de lote"
 msgid "Batch code for this build output"
 msgstr "Número de lote de este producto final"
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr "Fecha de Creación"
@@ -797,7 +797,7 @@ 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:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr "Fecha de finalización"
 
@@ -805,7 +805,7 @@ msgstr "Fecha de finalización"
 msgid "completed by"
 msgstr "terminado por"
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr "Emitido por"
 
@@ -816,9 +816,9 @@ msgstr "El usuario que emitió esta orden"
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr "Responsable"
 
@@ -829,7 +829,7 @@ msgstr "Usuario responsable de esta orden"
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr "Link externo"
@@ -839,17 +839,17 @@ msgstr "Link externo"
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr "Notas"
 
@@ -869,69 +869,69 @@ msgstr "La construcción de la salida ya está completa"
 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:1168
 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:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr "Cantidad asignada ({q}) no debe exceder la cantidad disponible de stock ({a})"
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr "Artículo de stock sobreasignado"
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 msgid "Allocation quantity must be greater than zero"
 msgstr "Cantidad asignada debe ser mayor que cero"
 
-#: build/models.py:1193
+#: build/models.py:1199
 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:1256
 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:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr "Construcción o Armado"
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr "Armar para asignar partes"
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr "Artículo de stock"
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr "Producto original de stock"
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr "Producto original de stock"
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr "Cantidad"
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr "Cantidad de stock a asignar para construir"
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr "Instalar en"
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr "Artículo de stock de destino"
 
@@ -998,7 +999,7 @@ msgstr "Ingrese la cantidad para la producción de la construcción"
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr "La cantidad debe ser mayor que cero"
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr "Números de serie"
 
@@ -1042,12 +1043,12 @@ msgstr "Debe proporcionarse una lista de salidas de construcción"
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr "Unicación"
 
@@ -1058,10 +1059,10 @@ msgstr "Ubicación para las salidas de construcción completadas"
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr "Estado"
 
@@ -1097,8 +1098,8 @@ msgstr "El orden de construcción tiene salidas incompletas"
 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:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr "Item de Lista de Materiales"
 
@@ -1135,23 +1136,31 @@ msgstr "La salida de construcción no se puede especificar para la asignación d
 msgid "Allocation items must be provided"
 msgstr "Debe proporcionarse la adjudicación de artículos"
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr "Stock no ha sido asignado completamente a este pedido de construcción"
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr "Fecha objetivo"
 
@@ -1250,7 +1259,7 @@ msgstr "Vencido"
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr "Completados"
@@ -1262,7 +1271,7 @@ msgstr "Completados"
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr "Orden de Venta"
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr "Emitido por"
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr "Salidas incompletas"
 
@@ -1311,7 +1321,7 @@ msgstr "Partes asignadas"
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr "Lote"
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr "Creado"
 
@@ -1340,7 +1350,7 @@ msgstr "Órdenes de Trabajo herederas"
 msgid "Allocate Stock to Build"
 msgstr "Asignar Stock a Trabajo"
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr "Desasignar stock"
 
@@ -1431,8 +1441,8 @@ msgstr "Salidas de Trabajo Completadas"
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr "Adjuntos"
@@ -1441,27 +1451,27 @@ msgstr "Adjuntos"
 msgid "Build Notes"
 msgstr "Notas del Trabajo"
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr "Editar notas"
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr "Asignación completa"
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr "Todos los artículos de stock no rastreados han sido asignados"
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr "Nueva Orden de Trabajo"
 
@@ -1485,13 +1495,9 @@ msgstr "Mostrar vista de lista"
 msgid "Build Order Details"
 msgstr "Configuración de Pedido de Trabajo"
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr "Artículos pendientes"
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
-msgstr "Elementos completados"
+msgid "Completed Outputs"
+msgstr ""
 
 #: build/views.py:73
 msgid "Build was cancelled"
@@ -1538,760 +1544,768 @@ msgstr "Archivo {name.title()}"
 msgid "Select {name} file to upload"
 msgstr "Seleccione el archivo {name} para subir"
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr "Clave de configuración (debe ser única - mayúsculas y minúsculas)"
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr "Valor de ajuste"
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr "El valor elegido no es una opción válida"
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr "El valor debe ser un valor booleano"
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr "El valor debe ser un entero"
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr "Cadena de clave debe ser única"
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr "Sin grupo"
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr "Reinicio requerido"
 
-#: common/models.py:631
+#: common/models.py:635
 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:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr "Nombre de Instancia de InvenTree"
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr "Descriptor de cadena para la instancia del servidor"
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr "Usar nombre de instancia"
 
-#: common/models.py:645
+#: common/models.py:649
 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:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr "Nombre de empresa"
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr "Nombre interno de empresa"
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr "URL Base"
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr "URL base para la instancia del servidor"
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr "Moneda predeterminada"
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr "Moneda predeterminada"
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr "Descargar desde URL"
 
-#: common/models.py:672
+#: common/models.py:676
 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:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Soporte de código de barras"
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr "Habilitar soporte para escáner de código de barras"
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr "Regex IPN"
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Patrón de expresión regular para IPN de la parte coincidente"
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr "Permitir IPN duplicado"
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Permitir que varias partes compartan el mismo IPN"
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr "Permitir editar IPN"
 
-#: common/models.py:698
+#: common/models.py:702
 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:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr "Copiar parte de datos BOM"
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr "Copiar datos BOM por defecto al duplicar una parte"
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr "Copiar Parámetros de Pieza"
 
-#: common/models.py:712
+#: common/models.py:716
 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:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr "Copiar parte de datos de prueba"
 
-#: common/models.py:719
+#: common/models.py:723
 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:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr "Copiar plantillas de parámetros de categoría"
 
-#: common/models.py:726
+#: common/models.py:730
 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:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr "Plantilla"
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr "Las piezas son plantillas por defecto"
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr "Montaje"
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr "Las piezas pueden ser ensambladas desde otros componentes por defecto"
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr "Componente"
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr "Las piezas pueden ser usadas como subcomponentes por defecto"
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr "Comprable"
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr "Las piezas son comprables por defecto"
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr "Vendible"
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr "Las piezas se pueden vender por defecto"
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr "Rastreable"
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr "Las piezas son rastreables por defecto"
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr "Virtual"
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr "Las piezas son virtuales por defecto"
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr "Mostrar importación en vistas"
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr "Mostrar el asistente de importación en algunas vistas de partes"
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr "Mostrar precio en formularios"
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr "Mostrar precio de la pieza en algunos formularios"
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr "Mostrar precio en BOM"
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr "Incluye información de precios en tablas BOM"
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr "Mostrar Historial de Precios"
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr "Mostrar el precio histórico de la parte"
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr "Mostrar piezas relacionadas"
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr "Mostrar partes relacionadas para una pieza"
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr "Crear stock inicial"
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr "Crear stock inicial en la creación de partes"
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr "Precios internos"
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr "Habilitar precios internos para piezas"
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr "Precio interno como precio de BOM"
 
-#: common/models.py:841
+#: common/models.py:845
 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:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr "Formato de visualización de Nombre de Parte"
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr "Formato para mostrar el nombre de la pieza"
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr "Habilitar informes"
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr "Habilitar generación de informes"
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Modo de depuración"
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Generar informes en modo de depuración (salida HTML)"
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr "Tamaño de página"
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr "Tamaño de página predeterminado para informes PDF"
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr "Informe de prueba"
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr "Habilitar generación de informes de prueba"
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr "Expiración de stock"
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr "Habilitar la funcionalidad de expiración de stock"
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr "Vender existencias caducadas"
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr "Permitir venta de existencias caducadas"
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr "Tiempo histórico de Stock"
 
-#: common/models.py:902
+#: common/models.py:906
 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:904
+#: common/models.py:908
 msgid "days"
 msgstr "días"
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr "Crear Stock Caducado"
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr "Permitir crear con stock caducado"
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr "Control de Stock"
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr "Habilitar control de propiedad sobre ubicaciones de stock y artículos"
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr "Prefijo de Referencia de Orden de Trabajo"
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr "Valor de prefijo para referencia de la orden de trabajo"
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr "Regex de Referencia de Orden de Trabajo"
 
-#: common/models.py:930
+#: common/models.py:934
 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:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr "Prefijo de referencia de pedido de venta"
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr "Valor del prefijo para referencia del pedido de venta"
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr "Prefijo de orden de compra"
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr "Valor del prefijo para referencia de la orden de compra"
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr "Habilitar función de contraseña olvidada"
 
-#: common/models.py:948
+#: common/models.py:952
 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:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr "Habilitar registro"
 
-#: common/models.py:954
+#: common/models.py:958
 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:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr "Habilitar SSO"
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr "Habilitar SSO en las páginas de inicio de sesión"
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr "Email requerido"
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr "Requiere usuario para suministrar correo al registrarse"
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr "Auto-rellenar usuarios SSO"
 
-#: common/models.py:972
+#: common/models.py:976
 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:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr "Correo dos veces"
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr "Al registrarse pregunte dos veces a los usuarios por su correo"
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr "Contraseña dos veces"
 
-#: common/models.py:984
+#: common/models.py:988
 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:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr "Grupo al registrarse"
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr "Grupo al que se asignan nuevos usuarios al registrarse"
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr "Forzar MFA"
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr "Los usuarios deben utilizar seguridad multifactor."
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr "Habilitar integración de URL"
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr "Habilitar plugins para añadir rutas de URL"
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr "Habilitar integración de navegación"
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr "Habilitar plugins para integrar en la navegación"
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr "Habilitar integración de la aplicación"
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr "Habilitar plugins para añadir aplicaciones"
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr "Habilitar integración de programación"
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr "Habilitar plugins para ejecutar tareas programadas"
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr "Habilitar integración de eventos"
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr "Habilitar plugins para responder a eventos internos"
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Tecla de ajustes (debe ser única - mayúsculas y minúsculas"
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr "Mostrar partes suscritas"
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr "Mostrar las partes suscritas en la página principal"
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr "Mostrar categorías suscritas"
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr "Mostrar categorías de partes suscritas en la página de inicio"
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr "Mostrar últimas partes"
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr "Mostrar las últimas partes en la página de inicio"
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr "Conteo de Partes Recientes"
 
-#: common/models.py:1097
+#: common/models.py:1101
 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:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr "Mostrar BOMs no validadas"
 
-#: common/models.py:1104
+#: common/models.py:1108
 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:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr "Mostrar cambios recientes de stock"
 
-#: common/models.py:1110
+#: common/models.py:1114
 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:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr "Conteo Reciente de Stock"
 
-#: common/models.py:1116
+#: common/models.py:1120
 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:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr "Mostrar stock bajo"
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr "Mostrar artículos de stock bajo en la página de inicio"
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr "Mostrar stock agotado"
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr "Mostrar artículos agotados en la página de inicio"
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr "Mostrar stock necesario"
 
-#: common/models.py:1134
+#: common/models.py:1138
 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:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr "Mostrar stock caducado"
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr "Mostrar artículos de stock caducados en la página de inicio"
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr "Mostrar stock obsoleto"
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr "Mostrar elementos de stock obsoletos en la página de inicio"
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr "Mostrar trabajos pendientes"
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr "Mostrar trabajos pendientes en la página de inicio"
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr "Mostrar trabajos vencidos"
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr "Mostrar trabajos pendientes en la página de inicio"
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr "Mostrar Órdenes de Compra Pendientes"
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr "Mostrar las OC destacadas en la página de inicio"
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr "Mostrar OC atrasadas"
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr "Mostrar las OC vencidas en la página de inicio"
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr "Mostrar OV pendiemtes"
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr "Mostrar OV pendientes en la página de inicio"
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr "Mostrar OV atrasadas"
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr "Mostrar OV atrasadas en la página de inicio"
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr "Mostrar etiqueta interior"
 
-#: common/models.py:1189
+#: common/models.py:1193
 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:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr "Mostrar informe en línea"
 
-#: common/models.py:1196
+#: common/models.py:1200
 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:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr "Resultados de la vista previa"
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr "Número de resultados a mostrar en la ventana de vista previa de búsqueda"
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr "Buscar Mostrar Stock"
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr "Mostrar niveles de stock en la ventana de vista previa de búsqueda"
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr "Ocultar Partes Inactivas"
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr "Ocultar partes inactivas en la ventana de vista previa de búsqueda"
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr "Mostrar cantidad en formularios"
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr "Mostrar la cantidad de piezas disponibles en algunos formularios"
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr "Formularios de cierre de teclas de escape"
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr "Usa la clave de escape para cerrar formularios modales"
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr "Barra de navegación fija"
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr "La posición de la barra de navegación de InvenTree se fija en la parte superior de la pantalla"
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr "Cantidad de salto de precio"
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr "Precio"
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr "Precio unitario a la cantidad especificada"
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr "Endpoint"
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr "Punto final en el que se recibe este webhook"
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr "Nombre para este webhook"
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr "Nombre para este webhook"
 msgid "Active"
 msgstr "Activo"
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr "Está activo este webhook"
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr "Token"
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr "Token para el acceso"
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr "Clave"
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr "Secreto compartido para HMAC"
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr "ID de mensaje"
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr "Identificador único para este mensaje"
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr "Host"
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr "Servidor desde el cual se recibió este mensaje"
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr "Encabezado"
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr "Encabezado del mensaje"
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr "Cuerpo"
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr "Cuerpo de este mensaje"
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr "Endpoint en el que se recibió este mensaje"
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr "Trabajado en"
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr "¿El trabajo en este mensaje ha terminado?"
 
@@ -2463,7 +2477,7 @@ msgstr "Punto de contacto"
 msgid "Link to external company information"
 msgstr "Enlace a información externa de la empresa"
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr "Imágen"
 
@@ -2500,7 +2514,7 @@ msgstr "Moneda"
 msgid "Default currency used for this company"
 msgstr "Moneda predeterminada utilizada para esta empresa"
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr "Parte base"
@@ -2515,12 +2529,12 @@ msgstr "Seleccionar pieza"
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr "Fabricante"
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr "Seleccionar fabricante"
 
@@ -2528,11 +2542,11 @@ msgstr "Seleccionar fabricante"
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr "MPN"
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr "Número de Parte del Fabricante"
 
@@ -2557,8 +2571,8 @@ msgstr "Nombre del parámetro"
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr "Valor"
 
@@ -2566,10 +2580,10 @@ msgstr "Valor"
 msgid "Parameter value"
 msgstr "Valor del parámetro"
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr "Unidades"
 
@@ -2588,22 +2602,22 @@ msgstr "La parte vinculada del fabricante debe hacer referencia a la misma pieza
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr "Proveedor"
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr "Seleccionar proveedor"
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr "SKU"
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr "Unidad de mantenimiento de stock de proveedores"
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr "Descripción de la parte del proveedor"
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr "Nota"
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr "costo base"
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr "Cargo mínimo (p. ej., cuota de almacenamiento)"
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr "Paquetes"
 
@@ -2644,7 +2658,7 @@ msgstr "Paquetes"
 msgid "Part packaging"
 msgstr "Embalaje de partes"
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr "múltiple"
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr "Descargar desde URL"
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr "Cliente"
@@ -2739,7 +2753,7 @@ msgstr "Crear nueva parte del proveedor"
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr "Nueva Parte de Proveedor"
 
@@ -2747,8 +2761,8 @@ msgstr "Nueva Parte de Proveedor"
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr "Opciones"
 
@@ -2776,7 +2790,7 @@ msgstr "Partes del fabricante"
 msgid "Create new manufacturer part"
 msgstr "Crear nueva pieza de fabricante"
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr "Nueva pieza de fabricante"
 
@@ -2790,7 +2804,7 @@ msgstr "Stock del Proveedor"
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr "Nueva orden de compra"
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr "Nueva orden de venta"
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr "Stock asignado"
 
@@ -2840,13 +2854,13 @@ msgstr "Notas de la empresa"
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr "¿Eliminar piezas de proveedor?"
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr "Se eliminarán todas las partes del proveedor seleccionadas"
 
@@ -2863,7 +2877,7 @@ msgstr "Fabricantes"
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr "Pedir ítem"
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr "Proveedores"
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr "Eliminar partes del proveedor"
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr "Eliminar"
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr "Parámetros"
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr "Eliminar parámetro"
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr "Añadir parámetro"
 
@@ -2951,9 +2965,9 @@ 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:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr "Ítems de Proveedor"
 
@@ -2979,7 +2993,7 @@ msgstr "Crear nuevo artículo de stock"
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr "Nuevo artículo de stock"
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr "Pedidos de piezas al proveedor"
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr "Pedir ítem"
 
@@ -3030,10 +3044,10 @@ msgstr "Eliminar precio de descuento"
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr "Inventario"
 
@@ -3056,7 +3070,7 @@ msgstr "Precios"
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr "Elementos de stock"
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr "La pieza del proveedor debe coincidir con el proveedor"
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr "Orden"
 
@@ -3328,8 +3342,8 @@ msgstr "Orden"
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr "Orden de compra"
 
@@ -3339,7 +3353,7 @@ msgstr "Ítems de Proveedor"
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr "Recibido"
@@ -3348,9 +3362,9 @@ msgstr "Recibido"
 msgid "Number of items received"
 msgstr "Número de artículos recibidos"
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr "Precio de Compra"
 
@@ -3606,7 +3620,7 @@ msgstr "Descripción del pedido"
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr "Estado del pedido"
 
@@ -3679,9 +3693,9 @@ msgstr "Seleccionar Parte de Proveedor"
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr "Eliminar fila"
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr "Envíos pendientes"
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr "Acciones"
 
@@ -3930,35 +3944,51 @@ msgstr "Actualizado el precio unitario de {part} a {price}"
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr "Actualizado el precio unitario de {part} a {price} y la cantidad a {qty}"
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr "Válido"
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr "Validación de Lista de Materiales"
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr "Esta opción debe ser seleccionada"
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr "Debe ser mayor que 0"
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr "Debe ser una cantidad válida"
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr "Especificar ubicación para el stock inicial de piezas"
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr "Este campo es obligatorio"
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr "Ubicación Predeterminada"
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr "Stock Disponible"
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr "En pedido"
 
@@ -3992,448 +4022,448 @@ msgstr "Añadir plantilla de parámetro a todas las categorías"
 msgid "Input quantity for price calculation"
 msgstr "Cantidad de entrada para el cálculo del precio"
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr "Ubicación predeterminada para partes de esta categoría"
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr "Palabras clave predeterminadas"
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr "Palabras clave por defecto para partes en esta categoría"
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "Categoría de parte"
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr "Categorías de parte"
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr "Partes"
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr "Opción no válida para la parte principal"
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr "La parte '{p1}' se utiliza en BOM para '{p2}' (recursivo)"
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr "Próximos números de serie disponibles son"
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr "El siguiente número de serie disponible es"
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr "El número de serie más reciente es"
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "IPN duplicado no permitido en la configuración de partes"
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr "Nombre de la pieza"
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr "Es plantilla"
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr "¿Es esta parte una parte de la plantilla?"
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr "¿Es esta parte una variante de otra parte?"
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr "Variante de"
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr "Descripción de la pieza"
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr "Palabras claves"
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr "Palabras clave para mejorar la visibilidad en los resultados de búsqueda"
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr "Categoría"
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr "Categoría de parte"
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr "IPN"
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr "Número de parte interna"
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr "Revisión de parte o número de versión"
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr "Revisión"
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr "¿Dónde se almacena este elemento normalmente?"
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr "Proveedor por defecto"
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr "Parte de proveedor predeterminada"
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr "Expiración por defecto"
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr "Tiempo de expiración (en días) para los artículos de stock de esta parte"
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr "Stock mínimo"
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr "Nivel mínimo de stock permitido"
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr "Unidades de mantenimiento de stock para esta parte"
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr "¿Se puede construir esta pieza a partir de otras piezas?"
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr "¿Se puede utilizar esta pieza para construir otras partes?"
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr "¿Esta parte tiene seguimiento de objetos únicos?"
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr "¿Se puede comprar esta pieza a proveedores externos?"
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr "¿Se puede vender esta pieza a los clientes?"
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr "¿Está activa esta parte?"
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr "¿Es ésta una parte virtual, como un producto de software o una licencia?"
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr "Notas de parte - soporta formato Markdown"
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr "BOM checksum"
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr "Suma de control BOM almacenada"
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr "BOM comprobado por"
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr "Fecha BOM comprobada"
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr "Creación de Usuario"
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr "Vender múltiples"
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr "Las plantillas de prueba sólo pueden ser creadas para partes rastreables"
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr "Ya existe una prueba con este nombre para esta parte"
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr "Nombre de prueba"
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr "Introduzca un nombre para la prueba"
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr "Descripción de prueba"
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr "Introduce la descripción para esta prueba"
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr "Requerido"
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr "¿Es necesario pasar esta prueba?"
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr "Requiere valor"
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr "¿Esta prueba requiere un valor al agregar un resultado de la prueba?"
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr "Adjunto obligatorio"
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr "¿Esta prueba requiere un archivo adjunto al agregar un resultado de la prueba?"
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr "Carácter no válido en el nombre de la plantilla ({c})"
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr "El nombre de parámetro en la plantilla tiene que ser único"
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr "Nombre de Parámetro"
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr "Unidad del Parámetro"
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr "Parte principal"
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr "Plantilla de parámetro"
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr "Data"
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr "Valor del parámetro"
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr "Valor predeterminado"
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr "Valor de parámetro por defecto"
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr "ID de Parte"
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr "Seleccionar parte principal"
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr "Sub parte"
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr "Seleccionar parte a utilizar en BOM"
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr "Cantidad del artículo en BOM"
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr "Opcional"
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr "Este elemento BOM es opcional"
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr "Exceso"
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr "Cantidad estimada de desperdicio de construcción (absoluta o porcentaje)"
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr "Referencia de artículo de BOM"
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr "Notas del artículo de BOM"
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr "Checksum"
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr "Suma de comprobación de la línea en BOM"
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr "Heredado"
 
-#: part/models.py:2741
+#: part/models.py:2749
 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:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr "Permitir variantes"
 
-#: part/models.py:2747
+#: part/models.py:2755
 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:2832 stock/models.py:446
+#: part/models.py:2840 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"
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr "Debe especificar la subparte"
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr "Ítem de BOM sustituto"
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr "La parte sustituta no puede ser la misma que la parte principal"
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr "Artículo BOM superior"
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr "Sustituir parte"
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr "Parte 1"
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr "Parte 2"
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr "Seleccionar parte relacionada"
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr "Error al crear relación: compruebe que la parte no está relacionada con sí misma y que la relación es única"
 
@@ -4532,7 +4562,7 @@ msgstr "El BOM para <em>%(part)s</em> fue revisado por última vez por %(checker
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr "El BOM para <em>%(part)s</em> no ha sido validada."
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr "Acciones BOM"
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
-msgstr "¿Está seguro que desea eliminar la categoría"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
+msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
-msgstr "Esta categoría contiene %(count)s subcategorías"
+msgid "This category contains %(n)s child categories"
+msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
-msgstr "Si se elimina esta categoría, estas categorías se moverán a la"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
+msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
-msgstr "categoría"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
+msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
-msgstr "categoría de piezas de alto nivel"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
+msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
-msgstr "Esta categoría contiene %(count)s partes"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
+msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr "Si se elimina esta categoría, estas partes se moverán a la categoría principal %(path)s"
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
-msgstr "Si se elimina esta categoría, estas partes se moverán a la categoría principal"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
+msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr "Importar Partes"
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr "Duplicar Parte"
 
@@ -4708,150 +4735,150 @@ msgstr "%(full_name)s - <em>%(desc)s</em> (%(match_per)s%% coincidencia)"
 msgid "Part Stock"
 msgstr "Stock de parte"
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr "Asignaciones de Stock de Parte"
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr "Plantillas de prueba de parte"
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr "Añadir Plantilla de Prueba"
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr "Asignaciones de órdenes de venta"
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr "Variantes de Parte"
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr "Crear nueva variante"
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr "Nueva Variante"
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr "Añadir nuevo parámetro"
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr "Partes relacionadas"
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr "Añadir Relacionado"
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr "Lista de Materiales"
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr "Exportar acciones"
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr "Exportar BOM"
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr "Imprimir informe BOM"
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr "Subir BOM"
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr "Copiar BOM"
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr "Validar BOM"
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr "Nuevo Item en el BOM"
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr "Añadir artículo al BOM"
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr "Ensamblajes"
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr "Construcción de partes"
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr "Construir adjudicaciones de pedidos"
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr "Proveedores de piezas"
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr "Fabricantes de piezas"
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr "Eliminar partes del fabricante"
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr "¿Eliminar elementos BOM seleccionados?"
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr "Todos los elementos BOM seleccionados serán eliminados"
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr "Crear artículo para el BOM"
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr "Partes relacionadas"
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr "Añadir artículos relacionados"
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr "Añadir plantilla de resultados de prueba"
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr "Editar notas del artículo"
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr "Precio de unidad de compra - %(currency)s"
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr "Diferencia entre precio y costo unitario - %(currency)s"
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr "Costo de Unidad de Proveedor - %(currency)s"
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr "Precio unitario - %(currency)s"
@@ -4996,7 +5023,7 @@ msgstr "La pieza es virtual (no una pieza física)"
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr "Inactivo"
 
@@ -5031,8 +5058,8 @@ msgstr "Asignado a Pedidos"
 msgid "Can Build"
 msgstr "Puede construir"
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr "En construcción"
 
@@ -5131,7 +5158,11 @@ msgstr "Usado en"
 msgid "Allocations"
 msgstr "Asignaciones"
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr "Plantillas de Prueba"
 
@@ -5249,8 +5280,8 @@ msgid "Set category for the following parts"
 msgstr "Establecer categoría para las siguientes partes"
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr "Sin Stock"
 
@@ -5365,7 +5396,7 @@ msgstr "Crear plantilla Parámetro de Parte"
 msgid "Delete Part Parameter Template"
 msgstr "Eliminar Plantilla de Parámetros de Parte"
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr "Editar Categoría de Parte"
 
@@ -5603,12 +5634,12 @@ msgid "Stock Item Test Report"
 msgstr "Artículo Stock Informe de prueba"
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr "Número de serie"
 
@@ -5617,19 +5648,19 @@ msgid "Test Results"
 msgstr "Resultados de la Prueba"
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr "Prueba"
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr "Resultado"
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr "Fecha"
 
@@ -5647,8 +5678,8 @@ msgid "Installed Items"
 msgstr "Elementos instalados"
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr "Serial"
 
@@ -5664,9 +5695,9 @@ msgstr "Debe suministrarse una pieza válida"
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr "Fecha de Expiración"
 
@@ -5706,228 +5737,228 @@ msgstr "Confirmar desinstalación"
 msgid "Confirm removal of installed stock items"
 msgstr "Confirmar la eliminación de los artículos de stock instalados"
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr "Propietario"
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr "Seleccionar Propietario"
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr "Ya existe un Stock con este número de serie"
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr "Tipo de pieza ('{pf}') debe ser {pe}"
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 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:474
+#: stock/models.py:489
 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:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr "El objeto no puede pertenecer a sí mismo"
 
-#: stock/models.py:502
+#: stock/models.py:517
 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:509
+#: stock/models.py:524
 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:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr "Artículo de stock padre"
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr "Parte base"
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr "Seleccione una parte del proveedor correspondiente para este artículo de stock"
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr "Ubicación de Stock"
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr "¿Dónde se encuentra este artículo de stock?"
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr "Empaquetar este elemento de stock se almacena en"
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr "Instalado en"
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr "¿Está este elemento instalado en otro elemento?"
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr "Número de serie para este elemento"
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr "Código de lote para este artículo de stock"
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr "Cantidad de Stock"
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr "Build de origen"
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr "Build para este item de stock"
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr "Orden de compra de origen"
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr "Orden de compra para este artículo de stock"
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr "Orden de venta de destino"
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr "Fecha de caducidad del artículo de stock. El stock se considerará caducado después de esta fecha"
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr "Eliminar al agotar"
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr "Eliminar este artículo de stock cuando se agoten las existencias"
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr "Notas del artículo de stock"
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr "Precio de compra único en el momento de la compra"
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr "La parte no está establecida como rastreable"
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr "Cantidad debe ser un entero"
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr "La cantidad no debe exceder la cantidad disponible de existencias ({n})"
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr "Los números de serie deben ser una lista de enteros"
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr "La cantidad no coincide con los números de serie"
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr "Los números de serie ya existen: {exists}"
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr "Artículo de stock ha sido asignado a un pedido de venta"
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr "Artículo de stock está instalado en otro artículo"
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr "Artículo de stock contiene otros artículos"
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr "Artículo de stock ha sido asignado a un cliente"
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr "El artículo de stock está en producción"
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr "Stock serializado no puede ser combinado"
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr "Artículos de Stock Duplicados"
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr "Los artículos de stock deben referirse a la misma parte"
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr "Los artículos de stock deben referirse a la misma parte del proveedor"
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr "Los códigos de estado del stock deben coincidir"
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 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:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr "Notas de entrada"
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr "Debe proporcionarse un valor para esta prueba"
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr "El archivo adjunto debe ser subido para esta prueba"
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr "Nombre del test"
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr "Resultado de la prueba"
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr "Valor de salida de prueba"
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr "Adjunto de resultados de prueba"
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr "Notas de prueba"
 
@@ -6081,11 +6112,11 @@ msgstr "Añadir Datos de Prueba"
 msgid "Installed Stock Items"
 msgstr "Elementos de Stock instalados"
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr "Instalar elemento de stock"
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr "Añadir Resultado de Prueba"
 
@@ -6210,7 +6241,7 @@ msgid "Stale"
 msgstr "Desactualizado"
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr "Última actualización"
 
@@ -6247,7 +6278,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr "Este artículo de stock está serializado - tiene un número de serie único y la cantidad no se puede ajustar."
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr "Ubicación no establecida"
 
@@ -6276,7 +6307,7 @@ msgstr "No estás en la lista de propietarios de este artículo. Este artículo
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr "Editar Estado del Stock"
 
@@ -6357,10 +6388,38 @@ msgstr "Acciones de impresión"
 msgid "Print labels"
 msgstr "Imprimir Etiquetas"
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr "¿Está seguro que desea eliminar esta ubicación?"
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr "Cargando..."
@@ -6442,7 +6501,7 @@ msgstr "Código QR de Item de Stock"
 msgid "Uninstall Stock Items"
 msgstr "Desinstalar artículos de stock"
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr "Confirmar ajuste de stock"
 
@@ -6450,7 +6509,7 @@ msgstr "Confirmar ajuste de stock"
 msgid "Uninstalled stock items"
 msgstr "Artículos de stock desinstalados"
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr "Editar artículo de stock"
 
@@ -6462,7 +6521,7 @@ msgstr "Crear nueva ubicación de stock"
 msgid "Create new Stock Item"
 msgstr "Crear nuevo artículo de stock"
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr "Duplicar artículo de stock"
 
@@ -7059,60 +7118,60 @@ msgstr "%(time)s atrás"
 msgid "Do you really want to remove the selected email address?"
 msgstr "¿Realmente desea eliminar la dirección de correo electrónico seleccionada?"
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr "Configuración del Tema"
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr "Seleccionar tema"
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr "Establecer tema"
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr "Configuración de Idioma"
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr "Seleccionar idioma"
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr "%(lang_translated)s%% traducido"
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr "No hay traducciones disponibles"
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr "Definir Idioma"
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr "Algunos idiomas no están completos"
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr "Mostrar solo el contenido"
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr "y oculto."
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr "Mostrar también"
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr "¡Ayuda a los esfuerzos de traducción!"
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr "La traducción nativa de la aplicación web de InvenTree es <a href=\"%(link)s\"> un aporte de la comunidad a través de crowdin</a>. Las contribuciones son bienvenidas y alentadas."
@@ -7419,8 +7478,8 @@ msgstr "Cantidad requerida"
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr "Disponible"
@@ -7612,7 +7671,7 @@ msgstr "Esto eliminará la asociación entre este artículo de stock y el códig
 msgid "Unlink"
 msgstr "Desvincular"
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr "Eliminar elemento de stock"
 
@@ -7752,7 +7811,7 @@ msgstr "Editar sustitutos de elementos BOM"
 msgid "Substitutes Available"
 msgstr "Sustitutos Disponibles"
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr "Stock de variante permitido"
 
@@ -7804,7 +7863,7 @@ msgstr "No se encontraron elementos BOM"
 msgid "Are you sure you want to delete this BOM item?"
 msgstr "¿Está seguro que desea eliminar este elemento BOM?"
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr "Parte requerida"
 
@@ -7918,137 +7977,141 @@ msgstr "Ubicación no especificada"
 msgid "No active build outputs found"
 msgstr "No se encontraron salidas de trabajo activas"
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr "Editar asignación de stock"
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr "Eliminar asignación de stock"
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr "Editar Asignación"
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr "Quitar asignación"
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr "Piezas sustitutas disponibles"
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr "Cantidad por"
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr "Asignadas"
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr "Stock de Trabajo"
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr "Pedido de stock"
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr "Asignar stock"
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr "Seleccionar partes"
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr "Debe seleccionar al menos una parte para asignar"
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr "Especificar la cantidad de asignación de stock"
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 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:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr "Confirmar asignación de stock"
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr "Asignar Artículos de Stock a Orden de Trabajo"
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr "No hay ubicaciones de stock coincidentes"
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr "No hay artículos de stock coincidentes"
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr "No hay trabajos que coincidan con la consulta"
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr "Seleccionar"
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr "Orden de trabajo atrasada"
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr "No hay información de usuario"
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr "Sin información"
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr "No se asignaron partes para"
 
@@ -8113,34 +8176,34 @@ msgid "No manufacturer parts found"
 msgstr "No se encontraron partes del fabricante"
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr "Plantilla de parte"
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr "Parte ensamblada"
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr "No se encontraron parámetros"
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr "Editar parámetro"
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr "Eliminar parámetro"
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr "Editar parámetro"
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr "Eliminar parámetro"
 
@@ -8249,7 +8312,7 @@ msgid "NO"
 msgstr "NO"
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr "Seleccionar elementos de stock"
 
@@ -8446,7 +8509,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr "Cantidad a recibir"
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr "Estado del Stock"
 
@@ -8470,7 +8533,7 @@ msgstr "Confirmar recepción de artículos"
 msgid "Receive Purchase Order Items"
 msgstr "Recibir artículos de orden de compra"
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr "No se encontraron órdenes de compra"
 
@@ -8499,7 +8562,7 @@ msgid "Total"
 msgstr "Total"
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr "Precio Unitario"
 
@@ -8508,11 +8571,11 @@ msgid "Total Price"
 msgstr "Precio Total"
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr "Recibir ítem de línea"
 
@@ -8593,7 +8656,7 @@ msgid "Delete Stock Allocation"
 msgstr "Eliminar Adjudicación de Stock"
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr "Enviado al cliente"
 
@@ -8633,237 +8696,245 @@ msgstr "Actualizar Precio Unitario"
 msgid "No matching line items"
 msgstr "No hay elementos de línea coincidentes"
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr "Atributos de Parte"
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr "Opciones de Creación de Parte"
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr "Opciones de Duplicación de Parte"
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr "Opciones de Proveedor"
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr "Añadir Categoría de Parte"
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr "Crear Stock Inicial"
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr "Crear un elemento inicial de stock para esta parte"
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr "Cantidad Inicial de Stock"
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr "Especifique la cantidad inicial de stock para esta parte"
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr "Seleccionar ubicación de stock de destino"
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr "Copiar Parámetros de Categoría"
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr "Copiar plantillas de parámetro de la categoría de partes seleccionada"
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr "Añadir Datos de Proveedor"
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr "Crear datos iniciales del proveedor para esta parte"
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr "Copiar Imagen"
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr "Copiar imagen desde la parte original"
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr "Copiar la factura de materiales de la parte original"
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr "Copiar Parámetros"
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr "Copiar datos del parámetro de la parte original"
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr "Categoría superior de parte"
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr "Editar Parte"
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr "Parte editada"
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr "Crear Variante de Parte"
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr "Estás suscrito a las notificaciones de este elemento"
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr "Te has suscrito a las notificaciones de este elemento"
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr "Suscríbete a las notificaciones de este elemento"
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr "Has cancelado la suscripción a las notificaciones de este elemento"
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr "Validar el BOM marcará cada elemento de línea como válido"
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr "Validar la Factura de Materiales"
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr "Validación de Lista de Materiales"
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr "Copiar Factura de Materiales"
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr "Parte Rastreable"
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr "Parte virtual"
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr "Parte suscrita"
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr "Pieza vendible"
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr "No se encontraron variantes"
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr "Eliminar relación de parte"
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr "Eliminar Relación de Parte"
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr "No se encontraron partes"
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr "Sin categoría"
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr "Stock bajo"
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr "Mostrar como lista"
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr "Mostrar como cuadrícula"
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr "Mostrar como árbol"
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr "Categoría suscrita"
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr "Ruta"
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr "No hay plantillas de prueba que coincidan con la consulta"
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr "Editar resultado de prueba"
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr "Eliminar resultado de prueba"
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr "Esta prueba está definida para una parte principal"
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr "Editar plantilla de resultado de prueba"
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr "Eliminar plantilla de resultados de prueba"
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr "No se encontró información de ${human_name}"
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr "Editar ${human_name}"
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr "Eliminar ${human_name}"
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr "Precio Único"
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr "Diferencia de Precio Único"
 
@@ -8965,328 +9036,332 @@ msgstr "Introduzca la cantidad inicial para este artículo de stock"
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr "Introduzca números de serie para el nuevo stock (o deje en blanco)"
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr "Crear nuevo artículo de stock"
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr "Creados varios artículos de stock"
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr "Encontrar número serial"
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr "Introducir número de serie"
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr "Introducir un número de serie"
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr "Ningún número de serie coincidente"
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr "Más de un resultado encontrado"
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr "Confirmar asignación de stock"
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr "Asignar Stock al Cliente"
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr "Advertencia: La operación de fusión no puede ser revertida"
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr "Alguna información se perderá al combinar artículos de stock"
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr "Se eliminará el historial de transacciones de stock para elementos fusionados"
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr "La información de la pieza del proveedor se eliminará para los artículos fusionados"
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr "Confirmar fusión de artículos de stock"
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr "Fusionar Artículos de Stock"
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr "Transferir Stock"
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr "Mover"
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr "Contar Stock"
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr "Contar"
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr "Eliminar Stock"
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr "Tomar"
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr "Añadir Stock"
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr "Añadir"
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr "Eliminar Stock"
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr "La cantidad no se puede ajustar para el stock serializado"
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr "Especificar cantidad de stock"
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr "Debe seleccionar al menos un artículo de stock disponible"
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr "PASA"
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr "FALLO"
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr "SIN RESULTADO"
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr "Pruebas pasadas"
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr "Añadir resultado de prueba"
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr "No se encontraron resultados de prueba"
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr "Fecha de Prueba"
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr "Editar Resultados de Prueba"
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr "Borrar Resultado de Prueba"
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr "En producción"
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr "Instalado en el artículo de stock"
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr "Asignado a la Orden de Venta"
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr "Ninguna ubicación de stock establecida"
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr "El artículo de stock está en producción"
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr "Artículo de stock asignado al pedido de venta"
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr "Artículo de stock asignado al cliente"
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr "Artículo de stock ha caducado"
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr "El artículo de stock caducará pronto"
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr "Se ha asignado un artículo de stock serializado"
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr "Artículo de stock ha sido completamente asignado"
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr "Artículo de stock ha sido asignado parcialmente"
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr "Artículo de stock ha sido instalado en otro artículo"
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr "Artículo de stock ha sido rechazado"
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr "Artículo de stock perdido"
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr "Artículo de stock destruido"
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr "Agotado"
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr "Inventario"
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr "Parte del proveedor no especificada"
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr "No hay artículos de stock que coincidan con la consulta"
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr "elementos"
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr "lotes"
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr "ubicaciones"
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr "Ubicación indefinida"
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr "Establecer estado de stock"
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr "Seleccionar Código de Estado"
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 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:2438
 msgid "Allocated Quantity"
 msgstr "Cantidad Asignada"
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr "Detalles"
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr "Ubicación ya no existe"
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr "La orden de compra ya no existe"
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr "El cliente ya no existe"
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr "Artículo de stock ya no existe"
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr "Añadido"
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr "Eliminado"
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr "Editar entrada de rastreo"
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr "Eliminar entrada de rastreo"
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr "Ningún elemento instalado"
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr "Desinstalar elemento de stock"
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 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:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr "El artículo de stock está serializado y no pertenece a otro artículo"
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po
index 8ab8d2788f..10dfec73de 100644
--- a/InvenTree/locale/fr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/fr/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: French\n"
 "Language: fr_FR\n"
@@ -122,7 +122,7 @@ msgstr "Fichier manquant"
 msgid "Missing external link"
 msgstr "Lien externe manquant"
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr "Pièce jointe"
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr "Sélectionnez un fichier à joindre"
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr "Lien"
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr "Lien vers une url externe"
 
@@ -152,11 +152,11 @@ msgstr "Commentaire"
 msgid "File comment"
 msgstr "Commentaire du fichier"
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr "Utilisateur"
 
@@ -193,17 +193,17 @@ msgstr "Erreur lors du renommage du fichier"
 msgid "Invalid choice"
 msgstr "Choix invalide"
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr "Nom"
 
@@ -212,7 +212,7 @@ msgstr "Nom"
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr "Nom"
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr "Description"
 
@@ -240,7 +240,7 @@ msgstr "Description (facultative)"
 msgid "parent"
 msgstr "parent"
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr "Doit être un nombre valide"
 
@@ -501,7 +501,7 @@ msgstr "Séparer de l'élément parent"
 msgid "Split child item"
 msgstr "Fractionner l'élément enfant"
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr "Articles de stock fusionnés"
 
@@ -648,7 +648,7 @@ msgstr "Choix invalide pour la fabrication parente"
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr "Ordre de Fabrication"
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr "Référence de l' Ordre de Fabrication"
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr "Référence"
@@ -692,10 +692,10 @@ msgstr "BuildOrder associé a cette fabrication"
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr "BuildOrder associé a cette fabrication"
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr "Pièce"
 
@@ -733,8 +733,8 @@ msgstr "Bon de commande de référence"
 msgid "SalesOrder to which this build is allocated"
 msgstr "Commande de vente à laquelle cette construction est allouée"
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr "Emplacement d'origine"
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr "Code de statut de construction"
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr "Code de lot"
 
@@ -783,7 +783,7 @@ msgstr "Code de lot"
 msgid "Batch code for this build output"
 msgstr "Code de lot pour ce build output"
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr "Date de création"
@@ -797,7 +797,7 @@ 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:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr "Date d'achèvement"
 
@@ -805,7 +805,7 @@ msgstr "Date d'achèvement"
 msgid "completed by"
 msgstr "achevé par"
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr "Émis par"
 
@@ -816,9 +816,9 @@ msgstr "Utilisateur ayant émis cette commande de construction"
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr "Responsable"
 
@@ -829,7 +829,7 @@ msgstr "Utilisateur responsable de cette commande de construction"
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr "Lien Externe"
@@ -839,17 +839,17 @@ msgstr "Lien Externe"
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr "Notes"
 
@@ -869,69 +869,69 @@ msgstr "L'ordre de production a déjà été réalisé"
 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:1168
 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:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed 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:1187
 msgid "Stock item is over-allocated"
 msgstr "L'article de stock est suralloué"
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 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:1199
 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:1256
 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:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr "Assemblage"
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr "Construction à laquelle allouer des pièces"
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr "Article en stock"
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr "Stock d'origine de l'article"
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr "Stock d'origine de l'article"
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr "Quantité"
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr "Quantité de stock à allouer à la construction"
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr "Installer dans"
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr "Stock de destination de l'article"
 
@@ -998,7 +999,7 @@ msgstr "Entrer la quantité désiré pour la fabrication"
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr "La quantité doit être supérieure à zéro"
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr "Numéros de série"
 
@@ -1042,12 +1043,12 @@ msgstr "Une liste d'ordre de production doit être fourni"
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr "Emplacement"
 
@@ -1058,10 +1059,10 @@ msgstr "Emplacement des ordres de production achevés"
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr "État"
 
@@ -1097,8 +1098,8 @@ msgstr "L'ordre de production a des sorties incomplètes"
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr ""
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr "Le stock n'a pas été entièrement alloué à cet ordre de construction
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr "Date Cible"
 
@@ -1250,7 +1259,7 @@ msgstr "En retard"
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr "Terminé"
@@ -1262,7 +1271,7 @@ msgstr "Terminé"
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr "Commandes"
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr "Émis par"
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr "Sorties incomplètes"
 
@@ -1311,7 +1321,7 @@ msgstr "Pièces allouées"
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr ""
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr "Créé le"
 
@@ -1340,7 +1350,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr "Désallouer le stock"
 
@@ -1431,8 +1441,8 @@ msgstr ""
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr "Pieces jointes"
@@ -1441,27 +1451,27 @@ msgstr "Pieces jointes"
 msgid "Build Notes"
 msgstr "Notes de construction"
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr "Modifier les notes"
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr "Allocation terminée"
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr ""
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr "Nouvel ordre de construction"
 
@@ -1485,13 +1495,9 @@ msgstr "Affichage en liste"
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr "Articles en attente"
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
-msgstr "Articles terminés"
+msgid "Completed Outputs"
+msgstr ""
 
 #: build/views.py:73
 msgid "Build was cancelled"
@@ -1538,760 +1544,768 @@ msgstr "{name.title()} Fichier"
 msgid "Select {name} file to upload"
 msgstr "Sélectionner le fichier {name} à uploader"
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr "Valeur du paramètre"
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr "La valeur choisie n'est pas une option valide"
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr "La valeur doit être une valeur booléenne"
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr "La valeur doit être un nombre entier"
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr "La chaîne de caractères constituant la clé doit être unique"
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr "Pas de groupe"
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr "Redémarrage nécessaire"
 
-#: common/models.py:631
+#: common/models.py:635
 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:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr "Nom de l'instance InvenTree"
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr "Chaîne de caractères descriptive pour l'instance serveur"
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr "Utiliser le nom de l'instance"
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr "Utiliser le nom de l’instance dans la barre de titre"
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr "Nom de la société"
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr "Nom de société interne"
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr "URL de base"
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr "URL de base pour l'instance serveur"
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr "Devise par défaut"
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr "Devises par défaut"
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr "Télécharger depuis l'URL"
 
-#: common/models.py:672
+#: common/models.py:676
 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:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Support des code-barres"
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr "Activer le support du scanner de code-barres"
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr "Regex IPN"
 
-#: common/models.py:686
+#: common/models.py:690
 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:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr "Autoriser les IPN dupliqués"
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Permettre à plusieurs pièces de partager le même IPN"
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr "Autoriser l'édition de l'IPN"
 
-#: common/models.py:698
+#: common/models.py:702
 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:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr "Copier les données des paramètres de la pièce"
 
-#: common/models.py:712
+#: common/models.py:716
 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:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr "Copier les données de test de la pièce"
 
-#: common/models.py:719
+#: common/models.py:723
 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:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr "Copier les templates de paramètres de catégorie"
 
-#: common/models.py:726
+#: common/models.py:730
 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:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr "Template"
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr "Les pièces sont des templates par défaut"
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr "Composant"
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr "Achetable"
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr "Les pièces sont achetables par défaut"
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr "Vendable"
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr "Les pièces sont vendables par défaut"
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr "Traçable"
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr "Les pièces sont traçables par défaut"
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr "Virtuelle"
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr "Les pièces sont virtuelles par défaut"
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr "Afficher l'import dans les vues"
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr "Afficher l'assistant d'importation pour certaine vues de produits"
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr "Afficher le prix dans les formulaires"
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr "Afficher le prix de la pièce dans certains formulaires"
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr "Afficher le prix dans la BOM"
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr "Inclure les informations de prix dans les tableaux de la BOM"
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr "Afficher les pièces connexes"
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr "Afficher les pièces connexes à une pièce"
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr "Créer un stock initial"
 
-#: common/models.py:827
+#: common/models.py:831
 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:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr "Prix internes"
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr "Activer les prix internes pour les pièces"
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr "Taille de la page"
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr "Rapports de test"
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:904
+#: common/models.py:908
 msgid "days"
 msgstr "jours"
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr "Préfixe des commandes d'achats"
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr "Activer les mots de passe oubliés"
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr "Activer les inscriptions"
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr "Activer le SSO"
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr "Activer le SSO sur les pages de connexion"
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr "Email requis"
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr "Saisie automatique des utilisateurs SSO"
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr "Courriel en double"
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr "Activer l'intégration de plugins"
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr "Activer l'intégration de plugin pour ajouter des apps"
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Clé du paramètre (doit être unique - insensible à la casse)"
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr "Afficher les dernières pièces"
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr "Afficher les dernières modifications du stock"
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1193
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1200
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr "Actif"
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2463,7 +2477,7 @@ msgstr "Point de contact"
 msgid "Link to external company information"
 msgstr "Lien externe vers les informations de l'entreprise"
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr "Image"
 
@@ -2500,7 +2514,7 @@ msgstr "Devise"
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr ""
@@ -2515,12 +2529,12 @@ msgstr ""
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr "Fabricant"
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr "Sélectionner un fabricant"
 
@@ -2528,11 +2542,11 @@ msgstr "Sélectionner un fabricant"
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr ""
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr ""
 
@@ -2557,8 +2571,8 @@ msgstr ""
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr "Valeur"
 
@@ -2566,10 +2580,10 @@ msgstr "Valeur"
 msgid "Parameter value"
 msgstr ""
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr ""
 
@@ -2588,22 +2602,22 @@ msgstr ""
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr "Fournisseur"
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr ""
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr "coût de base"
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr ""
 
@@ -2644,7 +2658,7 @@ msgstr ""
 msgid "Part packaging"
 msgstr ""
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr ""
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr "Télécharger l'image depuis l'URL"
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr ""
@@ -2739,7 +2753,7 @@ msgstr ""
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr ""
 
@@ -2747,8 +2761,8 @@ msgstr ""
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr ""
 
@@ -2776,7 +2790,7 @@ msgstr ""
 msgid "Create new manufacturer part"
 msgstr ""
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr ""
 
@@ -2790,7 +2804,7 @@ msgstr ""
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr "Nouvelle commande achat"
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr "Nouvelle commande de vente"
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr "Stock affecté"
 
@@ -2840,13 +2854,13 @@ msgstr ""
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr ""
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
@@ -2863,7 +2877,7 @@ msgstr "Fabricants"
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr ""
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr "Fournisseurs"
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr "Supprimer les pièces du fournisseur"
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr "Supprimer"
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr "Paramètres"
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr ""
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr ""
 
@@ -2979,7 +2993,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr ""
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr ""
 
@@ -3030,10 +3044,10 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr "Stock"
 
@@ -3056,7 +3070,7 @@ msgstr "Tarif"
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr "Éléments en stock"
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr "Commande"
 
@@ -3328,8 +3342,8 @@ msgstr "Commande"
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr "Commande d’achat"
 
@@ -3339,7 +3353,7 @@ msgstr "Pièce fournisseur"
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr "Reçu"
@@ -3348,9 +3362,9 @@ msgstr "Reçu"
 msgid "Number of items received"
 msgstr "Nombre d'éléments reçus"
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr "Prix d'achat"
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr "Statut de la commande"
 
@@ -3679,9 +3693,9 @@ msgstr ""
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr "Supprimer la ligne"
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr ""
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr ""
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr ""
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr ""
 
@@ -3992,448 +4022,448 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr ""
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr "Les prochains numéros de série disponibles sont"
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr "Le prochain numéro de série disponible est"
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr "Le numéro de série le plus récent est"
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "IPN dupliqué non autorisé dans les paramètres de la pièce"
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr ""
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr ""
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr ""
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr "Catégorie"
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr "Catégorie de la pièce"
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr "IPN"
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr "Révision"
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr ""
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr "Ventes multiples"
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr "Nom de test"
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr "Requis"
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr "Données"
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr ""
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2741
+#: part/models.py:2749
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:2747
+#: part/models.py:2755
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
 msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
+msgid "This category contains %(n)s child categories"
 msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
 msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
 msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
 msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
 msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr ""
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr ""
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr ""
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr ""
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr ""
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr ""
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr ""
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr ""
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr ""
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr ""
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr ""
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr ""
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr ""
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr ""
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr ""
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr ""
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr "Tester le modèle"
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr ""
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr ""
 
@@ -5363,7 +5394,7 @@ msgstr ""
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr ""
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr "Numéro de série"
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr ""
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr ""
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr ""
 
@@ -5704,228 +5735,228 @@ msgstr ""
 msgid "Confirm removal of installed stock items"
 msgstr ""
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr "Propriétaire"
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr "Sélectionner un propriétaire"
 
-#: stock/models.py:427
+#: stock/models.py:442
 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:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 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:474
+#: stock/models.py:489
 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:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr ""
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr "Numéro de série pour cet article"
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr ""
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr "Les numéros de série doivent être une liste de nombres entiers"
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr "La quantité ne correspond pas au nombre de numéros de série"
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr "Les numéros de série existent déja : {exists}"
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr ""
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr "Cet article de stock est sérialisé - il a un numéro de série unique et la quantité ne peut pas être ajustée."
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr ""
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr ""
 msgid "Print labels"
 msgstr ""
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr ""
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr ""
 
@@ -6448,7 +6507,7 @@ msgstr ""
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr ""
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr ""
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr "Disponible"
@@ -7607,7 +7666,7 @@ msgstr "Ceci supprimera l'association entre cet article de stock et le code-barr
 msgid "Unlink"
 msgstr "Délier"
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr "Supprimer l'article de stock"
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr ""
 
@@ -7913,137 +7972,141 @@ msgstr ""
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr ""
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr ""
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr ""
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr ""
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr ""
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr ""
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr ""
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr ""
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr "Livré au client"
 
@@ -8628,237 +8691,245 @@ msgstr ""
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr "Attributs de la pièce"
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr "Options de création de pièce"
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr "Options de duplication de pièces"
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr "Options de fournisseur"
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr "Ajouter une catégorie de pièce"
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr "Créer un stock initial"
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr ""
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr ""
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr ""
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr "Copier l'image"
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr "Copier les paramètres"
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr ""
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr "Modifier la pièce"
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr "Pièce modifiée"
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr "Créer une variante de pièce"
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr "Pièce traçable"
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr "Pièce virtuelle"
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr ""
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr "Pièce vendable"
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr "Aucune pièce trouvée"
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr "Aucune catégorie"
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr "Stock bas"
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr "Afficher sous forme de liste"
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr "Afficher sous forme de grille"
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr "Afficher sous forme d'arborescence"
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr "Chemin d'accès"
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr "Modifier le résultat du test"
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr "Supprimer le résultat du test"
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr ""
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr ""
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr "Entrez les numéros de série pour le nouveau stock (ou laisser vide)"
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr "Trouver un numéro de série"
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr "Entrer le numéro de série"
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr "Entrer un numéro de série"
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr "Aucun numéro de série correspondant"
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr "Plus d'un résultat correspondant trouvé"
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr "Confirmer l'assignation de stock"
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr "Assigner le stock au client"
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr "Attention : l'opération de fusion est irréversible"
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr "Certaines informations seront perdues lors de la fusion des articles en stock"
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr "L'historique des transactions de stock sera supprimé pour les éléments fusionnés"
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr "Les informations sur la pièce du fournisseur seront supprimées pour les éléments fusionnés"
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr "Confirmer la fusion de l'article en stock"
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr "Fusionner les articles en stock"
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr "Transférer le stock"
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr "Transférer"
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr "Compter le stock"
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr "Compter"
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr "Supprimer du stock"
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr "Supprimer"
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr "Ajouter du stock"
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr "Ajouter"
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr "Supprimer le stock"
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr "La quantité ne peut pas être ajustée pour un stock sérialisé"
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr "Spécifiez la quantité du stock"
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr "Vous devez sélectionner au moins un article en stock disponible"
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr "RÉUSSI"
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr "ÉCHEC"
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr "AUCUN RÉSULTAT"
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr "Ajouter un résultat de test"
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr "Aucun résultat de test trouvé"
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr "Date du test"
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr "En production"
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr "Article en stock installé dans un autre article en stock"
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr "Assigné à une commande de vente"
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr "Aucun emplacement de stock défini"
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr "L'article de stock est en production"
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr "L'article en stock a été assigné à une commande de vente"
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr "L'article en stock a été assigné à un client"
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr "L'article en stock a expiré"
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr "L'article en stock va bientôt expirer"
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr "L'article de stock sérialisé a été alloué"
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr "L'article de stock a été complètement alloué"
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr "L'article de stock a été partiellement alloué"
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr "L'article en stock a été installé dans un autre article"
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr "L'article de stock a été rejeté"
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr "L'article de stock est perdu"
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr "L'article de stock est détruit"
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr "Epuisé"
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr "Prise d'inventaire"
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr "Pièce de fournisseur non précisée"
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr "Aucun article de stock ne correspond à la requête"
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr "articles"
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr "lots"
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr "emplacements"
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr "Emplacement indéfini"
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr "Définir l'état du stock"
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr "Sélectionner le code de statut"
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 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:2438
 msgid "Allocated Quantity"
 msgstr "Quantité Allouée"
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr "Détails"
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr "L'emplacement n'existe plus"
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr "La commande d'achat n'existe plus"
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr "Le client n'existe plus"
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr "L'article de stock n'existe plus"
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr "Ajouté"
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr "Supprimé"
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po
index 5bdc83d009..3676c45bb9 100644
--- a/InvenTree/locale/he/LC_MESSAGES/django.po
+++ b/InvenTree/locale/he/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Hebrew\n"
 "Language: he_IL\n"
@@ -122,7 +122,7 @@ msgstr "קובץ חסר"
 msgid "Missing external link"
 msgstr "חסר קישור חיצוני"
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr "קובץ מצורף"
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr "בחר קובץ לצירוף"
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr "קישור"
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr "קישור חיצוני"
 
@@ -152,11 +152,11 @@ msgstr "הערה"
 msgid "File comment"
 msgstr "הערת קובץ"
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr "משתמש"
 
@@ -193,17 +193,17 @@ msgstr "שגיאה בשינוי שם פריט"
 msgid "Invalid choice"
 msgstr "בחירה שגויה"
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr "שם"
 
@@ -212,7 +212,7 @@ msgstr "שם"
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr "שם"
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr "תיאור"
 
@@ -240,7 +240,7 @@ msgstr "תיאור (לא חובה)"
 msgid "parent"
 msgstr "מקור"
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr "המספר חייב להיות תקין"
 
@@ -501,7 +501,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr ""
 
@@ -648,7 +648,7 @@ msgstr ""
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr ""
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr ""
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr "מקט"
@@ -692,10 +692,10 @@ msgstr ""
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr ""
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr "רכיב"
 
@@ -733,8 +733,8 @@ msgstr ""
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr ""
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr ""
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr ""
 
@@ -783,7 +783,7 @@ msgstr ""
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr ""
@@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
 #: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr ""
 
@@ -805,7 +805,7 @@ msgstr ""
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr ""
 
@@ -816,9 +816,9 @@ msgstr ""
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr ""
 
@@ -829,7 +829,7 @@ msgstr ""
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr ""
@@ -839,17 +839,17 @@ msgstr ""
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr ""
 
@@ -869,69 +869,69 @@ msgstr ""
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1168
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1199
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1256
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr ""
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr "כמות"
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr ""
 
@@ -998,7 +999,7 @@ msgstr ""
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr "מספרים סידוריים"
 
@@ -1042,12 +1043,12 @@ msgstr ""
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr ""
 
@@ -1058,10 +1059,10 @@ msgstr ""
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr ""
 
@@ -1097,8 +1098,8 @@ msgstr ""
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr ""
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr ""
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr ""
 
@@ -1250,7 +1259,7 @@ msgstr ""
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr ""
@@ -1262,7 +1271,7 @@ msgstr ""
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr ""
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr ""
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr ""
 
@@ -1311,7 +1321,7 @@ msgstr ""
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr ""
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr ""
 
@@ -1340,7 +1350,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1431,8 +1441,8 @@ msgstr ""
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr ""
@@ -1441,27 +1451,27 @@ msgstr ""
 msgid "Build Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr ""
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr ""
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr ""
 
@@ -1485,12 +1495,8 @@ msgstr ""
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr ""
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
+msgid "Completed Outputs"
 msgstr ""
 
 #: build/views.py:73
@@ -1538,760 +1544,768 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr ""
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:631
+#: common/models.py:635
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr ""
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:672
+#: common/models.py:676
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr ""
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:698
+#: common/models.py:702
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:712
+#: common/models.py:716
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:719
+#: common/models.py:723
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr ""
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr ""
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr ""
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:904
+#: common/models.py:908
 msgid "days"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1193
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1200
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2463,7 +2477,7 @@ msgstr ""
 msgid "Link to external company information"
 msgstr ""
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr ""
 
@@ -2500,7 +2514,7 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr ""
@@ -2515,12 +2529,12 @@ msgstr ""
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr ""
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr ""
 
@@ -2528,11 +2542,11 @@ msgstr ""
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr ""
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr ""
 
@@ -2557,8 +2571,8 @@ msgstr ""
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr ""
 
@@ -2566,10 +2580,10 @@ msgstr ""
 msgid "Parameter value"
 msgstr ""
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr ""
 
@@ -2588,22 +2602,22 @@ msgstr ""
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr ""
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr ""
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr ""
 
@@ -2644,7 +2658,7 @@ msgstr ""
 msgid "Part packaging"
 msgstr ""
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr ""
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr ""
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr ""
@@ -2739,7 +2753,7 @@ msgstr ""
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr ""
 
@@ -2747,8 +2761,8 @@ msgstr ""
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr ""
 
@@ -2776,7 +2790,7 @@ msgstr ""
 msgid "Create new manufacturer part"
 msgstr ""
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr ""
 
@@ -2790,7 +2804,7 @@ msgstr ""
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr ""
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr ""
 
@@ -2840,13 +2854,13 @@ msgstr ""
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr ""
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
@@ -2863,7 +2877,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr ""
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr ""
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr ""
 
@@ -2979,7 +2993,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr ""
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr ""
 
@@ -3030,10 +3044,10 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr ""
 
@@ -3056,7 +3070,7 @@ msgstr ""
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr ""
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr ""
 
@@ -3328,8 +3342,8 @@ msgstr ""
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr ""
 
@@ -3339,7 +3353,7 @@ msgstr ""
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr ""
@@ -3348,9 +3362,9 @@ msgstr ""
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr ""
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr ""
 
@@ -3679,9 +3693,9 @@ msgstr ""
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr ""
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr ""
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr ""
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr ""
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr ""
 
@@ -3992,448 +4022,448 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr ""
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr ""
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr ""
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr ""
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr ""
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr ""
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr ""
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr ""
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr ""
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr ""
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr ""
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr ""
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2741
+#: part/models.py:2749
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:2747
+#: part/models.py:2755
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
 msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
+msgid "This category contains %(n)s child categories"
 msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
 msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
 msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
 msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
 msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr ""
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr ""
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr ""
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr ""
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr ""
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr ""
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr ""
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr ""
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr ""
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr ""
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr ""
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr ""
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr ""
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr ""
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr ""
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr ""
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr ""
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr ""
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr ""
 
@@ -5363,7 +5394,7 @@ msgstr ""
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr ""
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr ""
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr ""
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr ""
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr ""
 
@@ -5704,228 +5735,228 @@ msgstr ""
 msgid "Confirm removal of installed stock items"
 msgstr ""
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:474
+#: stock/models.py:489
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr ""
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr ""
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr ""
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr ""
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr ""
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr ""
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr ""
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr ""
 msgid "Print labels"
 msgstr ""
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr ""
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr ""
 
@@ -6448,7 +6507,7 @@ msgstr ""
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr ""
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr ""
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr ""
@@ -7607,7 +7666,7 @@ msgstr ""
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr ""
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr ""
 
@@ -7913,137 +7972,141 @@ msgstr ""
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr ""
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr ""
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr ""
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr ""
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr ""
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr ""
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr ""
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr ""
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr ""
 
@@ -8628,237 +8691,245 @@ msgstr ""
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr ""
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr ""
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr ""
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr ""
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr ""
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr ""
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr ""
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr ""
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr ""
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr ""
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr ""
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr ""
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr ""
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr ""
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr ""
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr ""
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr ""
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr ""
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr ""
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr ""
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr ""
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr ""
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr ""
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr ""
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr ""
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr ""
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr ""
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr ""
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr ""
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr ""
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr ""
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr ""
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr ""
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr ""
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr ""
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr ""
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr ""
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr ""
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr ""
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr ""
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr ""
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/hu/LC_MESSAGES/django.po b/InvenTree/locale/hu/LC_MESSAGES/django.po
index 37d19612f9..b5d5306a07 100644
--- a/InvenTree/locale/hu/LC_MESSAGES/django.po
+++ b/InvenTree/locale/hu/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 13:02\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Hungarian\n"
 "Language: hu_HU\n"
@@ -122,7 +122,7 @@ msgstr "Hiányzó fájl"
 msgid "Missing external link"
 msgstr "Hiányzó külső link"
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr "Melléklet"
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr "Válaszd ki a mellekelni kívánt fájlt"
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr "Link"
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr "Link külső URL-re"
 
@@ -152,11 +152,11 @@ msgstr "Megjegyzés"
 msgid "File comment"
 msgstr "Fájl megjegyzés"
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr "Felhasználó"
 
@@ -193,17 +193,17 @@ msgstr "Hiba a fájl átnevezésekor"
 msgid "Invalid choice"
 msgstr "Érvénytelen választás"
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr "Név"
 
@@ -212,7 +212,7 @@ msgstr "Név"
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr "Név"
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr "Leírás"
 
@@ -240,7 +240,7 @@ msgstr "Leírás (opcionális)"
 msgid "parent"
 msgstr "szülő"
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr "Érvényes számnak kell lennie"
 
@@ -501,7 +501,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:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr "Összevont készlet tétel"
 
@@ -648,7 +648,7 @@ msgstr "Hibás választás a szülő gyártásra"
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr "Gyártási utasítás"
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr "Gyártási utasítás azonosító"
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr "Azonosító"
@@ -692,10 +692,10 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve"
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve"
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr "Alkatrész"
 
@@ -733,8 +733,8 @@ msgstr "Vevői rendelés azonosító"
 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:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr "Forrás hely"
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr "Gyártás státusz kód"
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr "Batch kód"
 
@@ -783,7 +783,7 @@ msgstr "Batch kód"
 msgid "Batch code for this build output"
 msgstr "Batch kód a gyártás kimenetéhez"
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr "Létrehozás dátuma"
@@ -797,7 +797,7 @@ 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:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr "Elkészítés dátuma"
 
@@ -805,7 +805,7 @@ msgstr "Elkészítés dátuma"
 msgid "completed by"
 msgstr "elkészítette"
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr "Kiállította"
 
@@ -816,9 +816,9 @@ msgstr "Felhasználó aki ezt a gyártási utasítást kiállította"
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr "Felelős"
 
@@ -829,7 +829,7 @@ msgstr "Felhasználó aki felelős ezért a gyártási utasításért"
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr "Külső link"
@@ -839,17 +839,17 @@ msgstr "Külső link"
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr "Megjegyzések"
 
@@ -869,69 +869,69 @@ msgstr "Gyártási kimenet már kész"
 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:1168
 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:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr "Lefoglalt mennyiség ({q}) nem lépheti túl a készletet ({a})"
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr "Készlet túlfoglalva"
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 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:1199
 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:1256
 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:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr "Gyártás"
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr "Gyártás amihez készletet foglaljunk"
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr "Készlet tétel"
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr "Forrás készlet tétel"
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr "Forrás készlet tétel"
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr "Mennyiség"
 
-#: build/models.py:1350
+#: build/models.py:1356
 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:1364
 msgid "Install into"
 msgstr "Beépítés ebbe"
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr "Cél készlet tétel"
 
@@ -998,7 +999,7 @@ msgstr "Add meg a mennyiséget a gyártás kimenetéhez"
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr "Mennyiségnek nullánál többnek kell lennie"
 
@@ -1013,7 +1014,7 @@ msgstr "Egész számú mennyiség szükséges, mivel az alkatrészjegyzék egyed
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr "Sorozatszámok"
 
@@ -1042,12 +1043,12 @@ msgstr "A gyártási kimenetek listáját meg kell adni"
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr "Hely"
 
@@ -1058,10 +1059,10 @@ msgstr "A kész gyártási kimenetek helye"
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr "Állapot"
 
@@ -1097,8 +1098,8 @@ msgstr "A gyártási utasítás befejezetlen kimeneteket tartalmaz"
 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:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr "Alkatrészjegyzék tétel"
 
@@ -1135,23 +1136,31 @@ msgstr "Gyártási kimenetet nem lehet megadni a követésre kötelezett alkatr
 msgid "Allocation items must be provided"
 msgstr "A lefoglalandó tételeket meg kell adni"
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 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:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr "Hely kizárása"
+
+#: build/serializers.py:740
+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:745
 msgid "Interchangeable Stock"
 msgstr "Felcserélhető készlet"
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 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:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr "Készlet helyettesítés"
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr "Helyettesítő alkatrészek foglalásának engedélyezése"
 
@@ -1226,9 +1235,9 @@ msgstr "A készlet nem lett teljesen lefoglalva ehhez a gyártási utasításhoz
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr "Cél dátum"
 
@@ -1250,7 +1259,7 @@ msgstr "Megkésett"
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr "Kész"
@@ -1262,7 +1271,7 @@ msgstr "Kész"
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr "Vevői rendelés"
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr "Kiállította"
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr "Befejezetlen kimenetek"
 
@@ -1311,7 +1321,7 @@ msgstr "Lefoglalt alkatrészek"
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr "Batch"
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr "Létrehozva"
 
@@ -1340,7 +1350,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:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr "Készlet felszabadítása"
 
@@ -1431,8 +1441,8 @@ msgstr "Befejezett gyártási kimenetek"
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr "Mellékletek"
@@ -1441,27 +1451,27 @@ msgstr "Mellékletek"
 msgid "Build Notes"
 msgstr "Gyártási megjegyzések"
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr "Megjegyzések szerkesztése"
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr "Lefoglalás kész"
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr "Az összes nem követett készlet lefoglalásra került"
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr "Új gyártási utasítás"
 
@@ -1485,13 +1495,9 @@ msgstr "Lista nézet megjenítése"
 msgid "Build Order Details"
 msgstr "Gyártási utasítás részletei"
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr "Függőben lévő tételek"
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
-msgstr "Kész tételek"
+msgid "Completed Outputs"
+msgstr "Befejezett kimenetek"
 
 #: build/views.py:73
 msgid "Build was cancelled"
@@ -1538,760 +1544,768 @@ msgstr "{name.title()} Fájl"
 msgid "Select {name} file to upload"
 msgstr "{name} fájl kiválasztása feltöltéshez"
 
-#: common/models.py:352
+#: common/models.py:356
 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:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr "Beállítás értéke"
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr "A kiválasztott érték nem egy érvényes lehetőség"
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr "Az érték bináris kell legyen"
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr "Az érték egész szám kell legyen"
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr "Kulcs string egyedi kell legyen"
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr "Nincs csoport"
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr "Újraindítás szükséges"
 
-#: common/models.py:631
+#: common/models.py:635
 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:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr "InvenTree példány neve"
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr "String leíró a kiszolgáló példányhoz"
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr "Példány név használata"
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr "Példány név használata a címsorban"
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr "Cég neve"
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr "Belső cégnév"
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr "Kiindulási URL"
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr "Kiindulási URL a kiszolgáló példányhoz"
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr "Alapértelmezett pénznem"
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr "Alapértelmezett pénznem"
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr "Letöltés URL-ről"
 
-#: common/models.py:672
+#: common/models.py:676
 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:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Vonalkód támogatás"
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr "Vonalkód olvasó engedélyezése"
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr "IPN reguláris kifejezés"
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Reguláris kifejezés ami illeszkedik az alkatrész IPN-re"
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr "Többször is előforduló IPN engedélyezése"
 
-#: common/models.py:691
+#: common/models.py:695
 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:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr "IPN szerkesztésének engedélyezése"
 
-#: common/models.py:698
+#: common/models.py:702
 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:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr "Alkatrészjegyzék adatok másolása"
 
-#: common/models.py:705
+#: common/models.py:709
 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:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr "Alkatrész paraméterek másolása"
 
-#: common/models.py:712
+#: common/models.py:716
 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:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr "Alkatrész teszt adatok másolása"
 
-#: common/models.py:719
+#: common/models.py:723
 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:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr "Kategória paraméter sablonok másolása"
 
-#: common/models.py:726
+#: common/models.py:730
 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:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr "Sablon"
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr "Alkatrészek alapból sablon alkatrészek legyenek"
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr "Gyártmány"
 
-#: common/models.py:740
+#: common/models.py:744
 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:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr "Összetevő"
 
-#: common/models.py:747
+#: common/models.py:751
 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:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr "Beszerezhető"
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr "Alkatrészek alapból beszerezhetők legyenek"
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr "Értékesíthető"
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr "Alkatrészek alapból eladhatók legyenek"
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr "Követésre kötelezett"
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr "Alkatrészek alapból követésre kötelezettek legyenek"
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr "Virtuális"
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr "Alkatrészek alapból virtuálisak legyenek"
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr "Importálás megjelenítése a nézetekben"
 
-#: common/models.py:782
+#: common/models.py:786
 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:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr "Ár megjelenítése a formokon"
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr "Alkatrész árak megjelenítése néhány formon"
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr "Ár megjelenítése az alkatrészjegyzékben"
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr "Árinformációk megjelenítése az alkatrészjegyzék táblákban"
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr "Ártörténet megjelenítése"
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr "Alkatrész ártörténet megjelenítése"
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr "Kapcsolódó alkatrészek megjelenítése"
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr "Alkatrész kapcsolódó alkatrészeinek megjelenítése"
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr "Kezdeti készlet létrehozása"
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr "Kezdeti készlet megadása az alkatrész létrehozásakor"
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr "Belső árak"
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr "Alkatrészekhez belső ár engedélyezése"
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr "Belső ár alkatrészjegyzék árként"
 
-#: common/models.py:841
+#: common/models.py:845
 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:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr "Alkatrész név megjelenítés formátuma"
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr "Formátum az alkatrész név megjelenítéséhez"
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr "Riportok engedélyezése"
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr "Riportok előállításának engedélyezése"
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Debug mód"
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Riportok előállítása HTML formátumban (hibakereséshez)"
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr "Lapméret"
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr "Alapértelmezett lapméret a PDF riportokhoz"
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr "Teszt riportok"
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr "Teszt riportok előállításának engedélyezése"
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr "Készlet lejárata"
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr "Készlet lejárat kezelésének engedélyezése"
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr "Lejárt készlet értékesítése"
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr "Lejárt készlet értékesítésének engedélyezése"
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr "Álló készlet ideje"
 
-#: common/models.py:902
+#: common/models.py:906
 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:904
+#: common/models.py:908
 msgid "days"
 msgstr "nap"
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr "Lejárt készlet gyártása"
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr "Gyártás engedélyezése lejárt készletből"
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr "Készlet tulajdonosok kezelése"
 
-#: common/models.py:917
+#: common/models.py:921
 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:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr "Gyártási utasítás azonosító előtagja"
 
-#: common/models.py:924
+#: common/models.py:928
 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:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr "Gyártási utasítás azonosító reguláris kifejezés"
 
-#: common/models.py:930
+#: common/models.py:934
 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:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr "Vevői rendelés azonosító előtagja"
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr "Előtag értéke a vevői rendelés azonosítóhoz"
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr "Beszerzési rendelés azonosító előtagja"
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr "Előtag értéke a beszerzési rendelés azonosítóhoz"
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr "Elfelejtett jelszó engedélyezése"
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr "Elfelejtett jelszó funkció engedélyezése a bejentkező oldalon"
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr "Regisztráció engedélyezése"
 
-#: common/models.py:954
+#: common/models.py:958
 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:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr "SSO engedélyezése"
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr "SSO engedélyezése a bejelentkező oldalon"
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr "Email szükséges"
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr "Kötelező email megadás regisztrációkor"
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr "SSO felhasználók automatikus kitöltése"
 
-#: common/models.py:972
+#: common/models.py:976
 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:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr "Email kétszer"
 
-#: common/models.py:978
+#: common/models.py:982
 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:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr "Jelszó kétszer"
 
-#: common/models.py:984
+#: common/models.py:988
 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:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr "Csoport regisztráláskor"
 
-#: common/models.py:990
+#: common/models.py:994
 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:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr "Többfaktoros hitelesítés kényszerítése"
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr "A felhasználóknak többfaktoros hitelesítést kell használniuk."
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr "URL integráció engedélyezése"
 
-#: common/models.py:1004
+#: common/models.py:1008
 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:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr "Navigációs integráció engedélyezése"
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr "Navigációs integráció engedélyezése a pluginok számára"
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr "App integráció engedélyezése"
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr "App hozzáadásának engedélyezése a pluginok számára"
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr "Ütemezés integráció engedélyezése"
 
-#: common/models.py:1025
+#: common/models.py:1029
 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:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr "Esemény integráció engedélyezése"
 
-#: common/models.py:1032
+#: common/models.py:1036
 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:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 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:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr "Értesítésre beállított alkatrészek megjelenítése"
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr "Alkatrész értesítések megjelenítése a főoldalon"
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr "Értesítésre beállított kategóriák megjelenítése"
 
-#: common/models.py:1085
+#: common/models.py:1089
 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:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr "Legújabb alkatrészek megjelenítése"
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr "Legújabb alkatrészek megjelenítése a főoldalon"
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr "Legfrissebb alkatrész szám"
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr "Főoldalon megjelenítendő legújabb alkatrészek"
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr "Jóváhagyás nélküli alkatrészjegyzékek megjelenítése"
 
-#: common/models.py:1104
+#: common/models.py:1108
 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:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr "Legfrissebb készlet változások megjelenítése"
 
-#: common/models.py:1110
+#: common/models.py:1114
 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:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr "Legfrissebb készlet mennyiség"
 
-#: common/models.py:1116
+#: common/models.py:1120
 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:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr "Alacsony készlet megjelenítése"
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr "Alacsony készletek megjelenítése a főoldalon"
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr "Kimerült készlet megjelenítése"
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr "Kimerült készletek megjelenítése a főoldalon"
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr "Szükséges készlet megjelenítése"
 
-#: common/models.py:1134
+#: common/models.py:1138
 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:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr "Lejárt készlet megjelenítése"
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr "Lejárt készletek megjelenítése a főoldalon"
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr "Állott készlet megjelenítése"
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr "Álló készletek megjelenítése a főoldalon"
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr "Függő gyártások megjelenítése"
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr "Folyamatban lévő gyártások megjelenítése a főoldalon"
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr "Megkésett gyártások megjelenítése"
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr "Megkésett gyártások megjelenítése a főoldalon"
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr "Kintlévő beszerzési rendelések"
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr "Kintlévő beszerzési rendelések megjelenítése a főoldalon"
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr "Megkésett megrendelések megjelenítése"
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr "Megkésett megrendelések megjelenítése a főoldalon"
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr "Függő vevői rendelések megjelenítése"
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr "Kintlévő vevői rendelések megjelenítése a főoldalon"
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr "Megkésett vevői rendelések megjelenítése"
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr "Megkésett vevői rendelések megjelenítése a főoldalon"
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr "Beágyazott címke megjelenítés"
 
-#: common/models.py:1189
+#: common/models.py:1193
 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:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr "Beágyazott riport megjelenítés"
 
-#: common/models.py:1196
+#: common/models.py:1200
 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:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr "Keresési előnézet eredményei"
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr "A keresési előnézetben megjelenítendő eredmények száma"
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr "Készlet keresés"
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr "Készlet mennyiség megjelenítése a keresési előnézetben"
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr "Inaktív alkatrészek elrejtése"
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr "Inaktív alkatrészek elrejtése a kereső előnézeti ablakban"
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr "Mennyiség megjelenítése a formokon"
 
-#: common/models.py:1224
+#: common/models.py:1228
 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:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr "ESC billentyű zárja be a formot"
 
-#: common/models.py:1231
+#: common/models.py:1235
 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:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr "Rögzített menüsor"
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr "InvenTree menü pozíciója mindig rögzítve legyen a lap tetején"
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr "Dátum formátum"
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr "Preferált dátum formátum a dátumok kijelzésekor"
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr "Alkatrész ütemezés"
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr "Alkatrész ütemezési információk megjelenítése"
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr "Árlépcső mennyiség"
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr "Ár"
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr "Egységár egy meghatározott mennyiség esetén"
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr "Végpont"
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr "Végpont ahol ez a webhook érkezik"
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr "Webhook neve"
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr "Webhook neve"
 msgid "Active"
 msgstr "Aktív"
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr "Aktív-e ez a webhook"
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr "Token"
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr "Token a hozzáféréshez"
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr "Titok"
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr "Megosztott titok a HMAC-hoz"
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr "Üzenet azonosító"
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr "Egyedi azonosító ehhez az üzenethez"
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr "Kiszolgáló"
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr "Kiszolgáló ahonnan ez az üzenet érkezett"
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr "Fejléc"
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr "Üzenet fejléce"
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr "Törzs"
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr "Üzenet törzse"
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr "Végpont amin ez az üzenet érkezett"
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr "Dolgozott rajta"
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr "Befejeződött a munka ezzel az üzenettel?"
 
@@ -2463,7 +2477,7 @@ msgstr "Kapcsolattartó"
 msgid "Link to external company information"
 msgstr "Link a külső céginformációhoz"
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr "Kép"
 
@@ -2500,7 +2514,7 @@ msgstr "Pénznem"
 msgid "Default currency used for this company"
 msgstr "Cég által használt alapértelmezett pénznem"
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr "Kiindulási alkatrész"
@@ -2515,12 +2529,12 @@ msgstr "Válassz alkatrészt"
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr "Gyártó"
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr "Gyártó kiválasztása"
 
@@ -2528,11 +2542,11 @@ msgstr "Gyártó kiválasztása"
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr "MPN"
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr "Gyártói alkatrész azonosító"
 
@@ -2557,8 +2571,8 @@ msgstr "Paraméter neve"
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr "Érték"
 
@@ -2566,10 +2580,10 @@ msgstr "Érték"
 msgid "Parameter value"
 msgstr "Paraméter értéke"
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr "Mértékegységek"
 
@@ -2588,22 +2602,22 @@ msgstr "Kapcsolódó gyártói alkatrésznek ugyanarra a kiindulási alkatrészr
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr "Beszállító"
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr "Beszállító kiválasztása"
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr "SKU"
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr "Beszállítói alkatrész azonosító"
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr "Beszállítói alkatrész leírása"
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr "Megjegyzés"
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr "alap költség"
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr "Minimális díj (pl. tárolási díj)"
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr "Csomagolás"
 
@@ -2644,7 +2658,7 @@ msgstr "Csomagolás"
 msgid "Part packaging"
 msgstr "Alkatrész csomagolás"
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr "többszörös"
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr "Kép letöltése URL-ről"
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr "Vevő"
@@ -2739,7 +2753,7 @@ msgstr "Új beszállítói alkatrész létrehozása"
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr "Új beszállítói alkatrész"
 
@@ -2747,8 +2761,8 @@ msgstr "Új beszállítói alkatrész"
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr "Opciók"
 
@@ -2776,7 +2790,7 @@ msgstr "Gyártói alkatrészek"
 msgid "Create new manufacturer part"
 msgstr "Új gyártói alkatrész létrehozása"
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr "Új gyártói alkatrész"
 
@@ -2790,7 +2804,7 @@ msgstr "Beszállítói készlet"
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr "Új beszerzési rendelés"
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr "Új vevői rendelés"
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr "Hozzárendelt készlet"
 
@@ -2840,13 +2854,13 @@ msgstr "Cég megjegyzések"
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr "Töröljük a beszállítói alkatrészeket?"
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr "Az összes kiválasztott beszállítói alkatrész törölve lesz"
 
@@ -2863,7 +2877,7 @@ msgstr "Gyártók"
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr "Alkatrész rendelés"
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr "Beszállítók"
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr "Beszállítói alkatrész törlése"
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr "Törlés"
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr "Paraméterek"
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr "Paraméterek törlése"
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr "Paraméter hozzáadása"
 
@@ -2951,9 +2965,9 @@ 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:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr "Beszállítói alkatrész"
 
@@ -2979,7 +2993,7 @@ msgstr "Új készlet tétel létrehozása"
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr "Új készlet tétel"
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr "Beszállítói alkatrész rendelések"
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr "Alkatrész rendelése"
 
@@ -3030,10 +3044,10 @@ msgstr "Árlépcső törlése"
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr "Készlet"
 
@@ -3056,7 +3070,7 @@ msgstr "Árazás"
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr "Készlet tételek"
@@ -3264,11 +3278,11 @@ msgstr "Cég akinek a tételek értékesítésre kerülnek"
 
 #: order/models.py:581
 msgid "Customer Reference "
-msgstr "Vevő azonosító "
+msgstr "Vevői azonosító "
 
 #: order/models.py:581
 msgid "Customer order reference code"
-msgstr "Vevő megrendelés azonosító kód"
+msgstr "Megrendelés azonosító kódja a vevőnél"
 
 #: order/models.py:586
 msgid "Target date for order completion. Order will be overdue after this date."
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr "Beszállítói alkatrésznek egyeznie kell a beszállítóval"
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr "Rendelés"
 
@@ -3328,8 +3342,8 @@ msgstr "Rendelés"
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr "Beszerzési rendelés"
 
@@ -3339,7 +3353,7 @@ msgstr "Beszállítói alkatrész"
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr "Beérkezett"
@@ -3348,9 +3362,9 @@ msgstr "Beérkezett"
 msgid "Number of items received"
 msgstr "Érkezett tételek száma"
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr "Beszerzési ár"
 
@@ -3606,7 +3620,7 @@ msgstr "Rendelés leírása"
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr "Rendelés állapota"
 
@@ -3679,9 +3693,9 @@ msgstr "Beszállítói alkatrész kiválasztása"
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr "Sor törlése"
@@ -3824,7 +3838,7 @@ msgstr "Ehhez a vevői rendeléshez nincs minden alkatrész lefoglalva"
 #: order/templates/order/sales_order_base.html:122
 #: templates/js/translated/order.js:1449
 msgid "Customer Reference"
-msgstr "Vevő azonosító"
+msgstr "Vevői azonosító"
 
 #: order/templates/order/sales_order_base.html:140
 #: order/templates/order/sales_order_detail.html:78
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr "Függő szállítmányok"
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr "Műveletek"
 
@@ -3930,35 +3944,51 @@ msgstr "A {part} egységára {price}-ra módosítva"
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr "A {part} alkatrész módosított egységára {price} mennyisége pedig {qty}"
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr "Beérkező beszerzési rendelés"
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr "Kimenő vevői rendelés"
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr "Gyártással előállított készlet"
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr "A gyártási utasításhoz szükséges készlet"
+
+#: part/api.py:641
 msgid "Valid"
 msgstr "Érvényes"
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr "Teljes alkatrészjegyzék jóváhagyása"
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr "Ennek az opciónak ki kll lennie választva"
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr "Nullánál nagyobb kell legyen"
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr "Érvényes mennyiségnek kell lennie"
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr "Hely megadása a kezdeti alkarész készlethez"
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr "Ez a mező kötelező"
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr "Alapértelmezett hely"
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr "Elérhető készlet"
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr "Beszállítás alatt"
 
@@ -3992,448 +4022,448 @@ msgstr "Paraméter sablon hozzáadása az összes kategóriához"
 msgid "Input quantity for price calculation"
 msgstr "Add meg a mennyiséget az árszámításhoz"
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr "Ebben a kategóriában lévő alkatrészek helye alapban"
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr "Alapértelmezett kulcsszavak"
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr "Ebben a kategóriában évő alkatrészek kulcsszavai alapban"
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "Alkatrész kategória"
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr "Alkatrész kategóriák"
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr "Alkatrészek"
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr "Hibás választás a szülő alkatrészre"
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr "A '{p1}' alkatrész a '{p2}' alkatrészjegyzékében már szerepel (rekurzív)"
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr "A következő szabad sorozatszámok"
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr "A következő szabad sorozatszám"
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr "A legutóbbi sorozatszám"
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "Azonos IPN nem engedélyezett az alkatrész beállításokban"
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr "Alkatrész neve"
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr "Sablon-e"
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr "Ez egy sablon alkatrész?"
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr "Ez az alkatrész egy másik változata?"
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
-msgstr "Változata ennek"
+msgstr "Ebből a sablonból"
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr "Alkatrész leírása"
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr "Kulcsszavak"
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr "Alkatrész kulcsszavak amik segítik a megjelenést a keresési eredményekben"
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr "Kategória"
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr "Alkatrész kategória"
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr "IPN"
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr "Belső alkatrész azonosító"
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
-msgstr "Alkatrész változat vagy verziószám"
+msgstr "Alkatrész változat vagy verziószám (pl. szín, hossz, revízió, stb.)"
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr "Változat"
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr "Alapban hol tároljuk ezt az alkatrészt?"
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr "Alapértelmezett beszállító"
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr "Alapértelmezett beszállítói alkatrész"
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr "Alapértelmezett lejárat"
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr "Lejárati idő (napban) ennek az alkatrésznek a készleteire"
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr "Minimális készlet"
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr "Minimálisan megengedett készlet mennyiség"
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr "Az alkatrész raktározási mértékegységei"
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr "Gyártható-e ez az alkatrész más alkatrészekből?"
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr "Felhasználható-e ez az alkatrész más alkatrészek gyártásához?"
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr "Kell-e külön követni az egyes példányait ennek az alkatrésznek?"
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr "Rendelhető-e ez az alkatrész egy külső beszállítótól?"
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr "Értékesíthető-e önmagában ez az alkatrész a vevőknek?"
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr "Aktív-e ez az alkatrész?"
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr "Ez egy virtuális nem megfogható alkatrész, pl. szoftver vagy licenc?"
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr "Alkatrész megjegyzései - támogatja a Markdown formázást"
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr "Alkatrészjegyzék ellenőrző összeg"
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr "Tárolt alkatrészjegyzék ellenőrző összeg"
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr "Alkatrészjegyzéket ellenőrizte"
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr "Alkatrészjegyzék ellenőrzési dátuma"
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr "Létrehozó"
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr "Több értékesítése"
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr "Teszt sablont csak követésre kötelezett alkatrészhez lehet csinálni"
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr "Erre az alkatrészre már létezik teszt ilyen névvel"
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr "Teszt név"
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr "Add meg a teszt nevét"
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr "Teszt leírása"
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr "Adj hozzá egy leírást ehhez a teszthez"
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr "Kötelező"
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr "Szükséges-e hogy ez a teszt sikeres legyen?"
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr "Kötelező érték"
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr "Szükséges-e hogy ennek a tesztnek az eredményéhez kötelezően érték legyen rendelve?"
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr "Kötelező melléklet"
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr "Szükséges-e hogy ennek a tesztnek az eredményéhez kötelezően fájl melléklet legyen rendelve?"
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr "Érvénytelen karakter ({c}) a sablon nevében"
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr "A paraméter sablon nevének egyedinek kell lennie"
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr "Paraméter neve"
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr "Paraméter mértékegysége"
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr "Szülő alkatrész"
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr "Paraméter sablon"
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr "Adat"
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr "Paraméter értéke"
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr "Alapértelmezett érték"
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr "Alapértelmezett paraméter érték"
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr "Alkatrész azonosító vagy alkatrész név"
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr "Alkatrész azonosító"
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr "Egyedi alkatrész azonosító érték"
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr "Alkatrész neve"
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr "Alkatrész IPN"
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr "Alkatrész IPN érték"
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr "Szint"
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr "Alkatrészjegyzék szint"
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr "Szülő alkatrész kiválasztása"
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr "Al alkatrész"
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr "Válaszd ki az alkatrészjegyzékben használandó alkatrészt"
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr "Alkatrészjegyzék mennyiség ehhez az alkatrészjegyzék tételhez"
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr "Opcionális"
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr "Ez az alkatrészjegyzék tétel opcionális"
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr "Többlet"
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr "Becsült gyártási veszteség (abszolút vagy százalékos)"
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr "Alkatrészjegyzék tétel azonosító"
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr "Alkatrészjegyzék tétel megjegyzései"
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr "Ellenőrző összeg"
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr "Alkatrészjegyzék sor ellenőrző összeg"
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr "Örökölt"
 
-#: part/models.py:2741
+#: part/models.py:2749
 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:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr "Változatok engedélyezése"
 
-#: part/models.py:2747
+#: part/models.py:2755
 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:2832 stock/models.py:446
+#: part/models.py:2840 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"
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr "Al alkatrészt kötelező megadni"
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr "Alkatrészjegyzék tétel helyettesítő"
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr "A helyettesítő alkatrész nem lehet ugyanaz mint a fő alkatrész"
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr "Szülő alkatrészjegyzék tétel"
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr "Helyettesítő alkatrész"
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr "1.rész"
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr "2.rész"
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr "Válassz kapcsolódó alkatrészt"
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr "Hiba a kapcsolat létrehozása közben: ellenőrizd hogy az alkatrész nem kapcsolódik-e saját magához és azt hogy a kapcsolat egyedi"
 
@@ -4532,7 +4562,7 @@ msgstr "A <em>%(part)s</em> alkatrészhez tartozó alkatrészjegyzéket utoljár
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr "A <em>%(part)s</em> alkatrészhez tartozó alkatrészjegyzék még nincs jóváhagyva."
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr "Alkatrészjegyzék műveletek"
 
@@ -4641,46 +4671,43 @@ msgstr "Új alkatrész létrehozása ez után"
 msgid "Part created successfully"
 msgstr "Alkatrész sikeresen létrehozva"
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
-msgstr "Biztos hogy törölni szeretnél kategóriát"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
+msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
-msgstr "Ez a kategória %(count)s alkategóriát tartalmaz"
+msgid "This category contains %(n)s child categories"
+msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
-msgstr "Ha törlöd ezt a kategóriát az alkategóriák át lesznek mozgatva a"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
+msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
-msgstr "kategória"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
+msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
-msgstr "legfelső szintű alkatrész kategória"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
+msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
-msgstr "Ez a kategória %(count)s alkatrészt tartalmaz"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
+msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr "Ha ez a kategória törölve lesz, ezek az alkatrészek a szülő kategóriába %(path)s mozognak"
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
-msgstr "Ha ez a kategória törölve lesz, ezek az alkatrészek a legfelső kategóriába mozognak"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
+msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr "Alkatrészek importálása"
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr "Alkatrész másolása"
 
@@ -4708,150 +4735,150 @@ msgstr "%(full_name)s - <em>%(desc)s</em> (%(match_per)s%% egyezik)"
 msgid "Part Stock"
 msgstr "Alkatrész készlet"
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr "Alkatrész készlet foglalások"
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr "Alkatrész teszt sablonok"
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr "Teszt sablon hozzáadása"
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr "Vevői rendeléshez foglalások"
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr "Alkatrész változatok"
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr "Új változat létrehozása"
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr "Új változat"
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr "Paraméter hozzáadása"
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr "Kapcsolódó alkatrészek"
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr "Kapcsolódó hozzáadása"
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr "Alkatrészjegyzék"
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr "Exportálási műveletek"
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr "Alkatrészjegyzék exportálása"
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr "Alkatrészjegyzék riport nyomtatása"
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr "Alkatrészjegyzék feltöltése"
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr "Alkatrészjegyzék másolása"
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr "Alkatrészjegyzék jóváhagyása"
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr "Új alkatrészjegyzék tétel"
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr "Alkatrészjegyzék tétel hozzáadása"
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr "Gyártmányok"
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr "Alkatrész gyártások"
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr "Gyártáshoz foglalások"
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr "Alkatrész beszállítók"
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr "Alkatrész gyártók"
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr "Gyártói alkatrészek törlése"
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr "Töröljük a kiválasztott alkatrészjegyzék tételeket?"
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr "Az összes kijelölt alkatrészjegyzék tétel törlésre kerül"
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr "Alkatrészjegyzék tétel létrehozása"
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr "Kapcsolódó alkatrész"
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr "Kapcsolódó alkatrész hozzáadása"
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr "Teszt eredmény sablon hozzáadása"
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr "Alkatrész megjegyzések szerkesztése"
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr "Beszerzési egységár - %(currency)s"
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr "Egységár-önköltség különbség - %(currency)s"
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr "Beszállítói egység költség - %(currency)s"
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr "Egységár - %(currency)s"
@@ -4996,7 +5023,7 @@ msgstr "Virtuális (nem kézzelfogható alkatrész)"
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr "Inaktív"
 
@@ -5031,8 +5058,8 @@ msgstr "Lefoglalva összesen"
 msgid "Can Build"
 msgstr "Gyártható"
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr "Gyártásban"
 
@@ -5131,7 +5158,11 @@ msgstr "Felhasználva ebben"
 msgid "Allocations"
 msgstr "Foglalások"
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr "Ütemezés"
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr "Teszt sablonok"
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr "Állítsd be a következő alkatrészek kategóriáját"
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr "Nincs készlet"
 
@@ -5363,7 +5394,7 @@ msgstr "Alkatrész paraméter sablon módosítása"
 msgid "Delete Part Parameter Template"
 msgstr "Alkatrész paraméter sablon törlése"
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr "Alkatrész kategória szerkesztése"
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr "Készlet tétel teszt riport"
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr "Sorozatszám"
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr "Teszt eredmények"
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr "Teszt"
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr "Eredmény"
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr "Dátum"
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr "Beépített tételek"
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr "Sorozatszám"
 
@@ -5662,9 +5693,9 @@ 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/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr "Lejárati dátum"
 
@@ -5704,228 +5735,228 @@ msgstr "Kiszedés megerősítése"
 msgid "Confirm removal of installed stock items"
 msgstr "Beépített készlet tételek eltávolításának megerősítése"
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr "Tulajdonos"
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr "Tulajdonos kiválasztása"
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr "Létezik már készlet tétel ilyen a sorozatszámmal"
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr "A alkatrész típus ('{pf}') {pe} kell legyen"
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 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:474
+#: stock/models.py:489
 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:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr "A tétel nem tartozhat saját magához"
 
-#: stock/models.py:502
+#: stock/models.py:517
 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:509
+#: stock/models.py:524
 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:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr "Szülő készlet tétel"
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr "Kiindulási alkatrész"
 
-#: stock/models.py:569
+#: stock/models.py:584
 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"
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr "Készlet hely"
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr "Hol található ez az alkatrész?"
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr "A csomagolása ennek a készlet tételnek itt van tárolva"
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr "Beépítve ebbe"
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr "Ez a tétel be van építve egy másik tételbe?"
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr "Sorozatszám ehhez a tételhez"
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr "Batch kód ehhez a készlet tételhez"
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr "Készlet mennyiség"
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr "Forrás gyártás"
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr "Gyártás ehhez a készlet tételhez"
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr "Forrás beszerzési rendelés"
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr "Beszerzés ehhez a készlet tételhez"
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr "Cél vevői rendelés"
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr "Készlet tétel lejárati dátuma. A készlet lejártnak tekinthető ezután a dátum után"
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr "Törlés ha kimerül"
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr "Készlet tétel törlése ha kimerül"
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr "Készlet tétel megjegyzések"
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr "Egy egység beszerzési ára a beszerzés időpontjában"
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr "Az alkatrész nem követésre kötelezett"
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr "Mennyiség egész szám kell legyen"
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr "A mennyiség nem lépheti túl a készletet ({n})"
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr "A sorozatszám egész számok listája kell legyen"
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr "A mennyiség nem egyezik a megadott sorozatszámok számával"
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr "Ezek a sorozatszámok már léteznek: {exists}"
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr "Készlet tétel hozzárendelve egy vevői rendeléshez"
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr "Készlet tétel beépül egy másikba"
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr "A készlet tétel más tételeket tartalmaz"
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr "Készlet tétel hozzárendelve egy vevőhöz"
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr "Készlet tétel gyártás alatt"
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr "Követésre kötelezett készlet nem vonható össze"
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr "Duplikált készlet tételek vannak"
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr "A készlet tétel ugyanarra az alkatrészre kell vonatkozzon"
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr "A készlet tétel ugyanarra a beszállítói alkatrészre kell vonatkozzon"
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr "Készlet tételek állapotainak egyeznie kell"
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 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:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr "Bejegyzés megjegyzései"
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr "Ehhez a teszthez meg kell adni értéket"
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr "Ehhez a teszthez fel kell tölteni mellékletet"
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr "Teszt neve"
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr "Teszt eredménye"
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr "Teszt kimeneti értéke"
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr "Teszt eredmény melléklet"
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr "Tesztek megjegyzései"
 
@@ -6079,11 +6110,11 @@ msgstr "Teszt adatok hozzáadása"
 msgid "Installed Stock Items"
 msgstr "Beépített készlet tételek"
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr "Készlet tétel beépítése"
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr "Teszt eredmény hozzáadása"
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr "Állott"
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr "Utoljára módosítva"
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr "Ez a készlet tétel egyedi követésre kötelezett - egyedi sorozatszámmal rendelkezik így a mennyiség nem módosítható."
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr "Nincs beállítva hely"
 
@@ -6274,7 +6305,7 @@ msgstr "Úgytűnik nem vagy ennek a tételnek a tulajdonosa. Ezt így nem tudod
 msgid "Read only"
 msgstr "Csak olvasható"
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr "Készlet állapot szerkesztése"
 
@@ -6355,10 +6386,38 @@ msgstr "Nyomtatási műveletek"
 msgid "Print labels"
 msgstr "Címke nyomtatása"
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr "Biztosan törölni szeretnéd ezt a készlet helyet?"
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr "Betöltés..."
@@ -6440,7 +6499,7 @@ msgstr "Készlet tétel QR kódja"
 msgid "Uninstall Stock Items"
 msgstr "Készlet tétel kiszedése"
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr "Készlet módosítás jóváhagyása"
 
@@ -6448,7 +6507,7 @@ msgstr "Készlet módosítás jóváhagyása"
 msgid "Uninstalled stock items"
 msgstr "Kiszedett készlet tételek"
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr "Készlet tétel szerkesztése"
 
@@ -6460,7 +6519,7 @@ msgstr "Új készlet hely létrehozása"
 msgid "Create new Stock Item"
 msgstr "Új készlet tétel létrehozása"
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr "Készlet tétel másolása"
 
@@ -7057,60 +7116,60 @@ msgstr "%(time)s óta"
 msgid "Do you really want to remove the selected email address?"
 msgstr "Biztosan törölni szeretnéd a kiválasztott email címet?"
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr "Téma beállítások"
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr "Téma választása"
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr "Téma beállítása"
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr "Nyelvi beállítások"
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr "Nyelv kiválasztása"
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr "%(lang_translated)s%%-ban lefordítva"
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr "Nem áll rendelkezésre fordítás"
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr "Nyelv beállítása"
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr "Néhány nyelv nem teljes"
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr "Csak a szükséges megjelenítése"
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr "és rejtett."
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr "Mutasd őket is"
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr "Segítsd a fordítási munkát!"
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr "A nyelvi fordításai az InvenTree web alkalmazásnak <a href=\"%(link)s\">közösségiek a crowdin-en</a>. A közreműködéseket szívesen fogadjuk és bátorítjuk."
@@ -7414,8 +7473,8 @@ msgstr "Szükséges mennyiség"
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr "Elérhető"
@@ -7607,7 +7666,7 @@ msgstr "Ez törli az összerendelést a készlet tétel és a vonalkód között
 msgid "Unlink"
 msgstr "Leválasztás"
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr "Készlet tétel törlése"
 
@@ -7747,7 +7806,7 @@ msgstr "Alkatrészjegyzék tétel helyettesítők szerkesztése"
 msgid "Substitutes Available"
 msgstr "Vannak helyettesítők"
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr "Készletváltozatok engedélyezve"
 
@@ -7799,7 +7858,7 @@ msgstr "Nem találhatók alkatrészjegyzék tételek"
 msgid "Are you sure you want to delete this BOM item?"
 msgstr "Biztos törölni akarod ezt az alkatrészjegyzék tételt?"
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr "Szükséges alkatrész"
 
@@ -7913,137 +7972,141 @@ msgstr "Hely nincs megadva"
 msgid "No active build outputs found"
 msgstr "Nem található aktív gyártási kimenet"
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr "Készlet foglalások szerkesztése"
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr "Készlet foglalások törlése"
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr "Foglalás szerkesztése"
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr "Foglalás törlése"
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr "Vannak helyettesítő alkatrészek"
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr "Mennyiség per"
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr "Lefoglalva"
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr "betöltés"
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr "Gyártási készlet"
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr "Készlet rendelés"
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr "Lefoglalt készlet"
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr "Kiválasztott alkatrészek"
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 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:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr "Készlet foglalási mennyiség megadása"
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr "Minden alkatrész lefoglalva"
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr "Minden kiválasztott alkatrész teljesen lefoglalva"
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 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:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr "Készlet foglalás megerősítése"
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr "Készlet foglalása a gyártási utasításhoz"
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr "Nincs egyező készlethely"
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr "Nincs egyező készlet"
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr "Automatikus készlet foglalás"
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 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:1868
+#: templates/js/translated/build.js:1882
 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:1869
+#: templates/js/translated/build.js:1883
 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:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr "Készlet tételek foglalása"
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr "Nincs a lekérdezéssel egyező gyártási utasítás"
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr "Kiválaszt"
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr "Gyártási utasítás megkésett"
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr "Nincs felhasználói információ"
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr "Nincs információ"
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr "Nincs lefoglalt alkatrész ehhez"
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr "Nincs gyártói alkatrész"
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr "Sablon alkatrész"
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr "Gyártmány alkatrész"
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr "Nem található paraméter"
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr "Paraméter szerkesztése"
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr "Paraméter törlése"
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr "Paraméter szerkesztése"
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr "Paraméter törlése"
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr "NEM"
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr "Készlet tételek kiválasztása"
 
@@ -8441,7 +8504,7 @@ msgstr "Sorozatszám hozzáadása"
 msgid "Quantity to receive"
 msgstr "Érkező mennyiség"
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr "Készlet állapota"
 
@@ -8465,7 +8528,7 @@ msgstr "Bevételezés megerősítése"
 msgid "Receive Purchase Order Items"
 msgstr "Beszerzési rendelés tételeinek bevételezése"
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr "Nem található beszerzési rendelés"
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr "Összesen"
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr "Egységár"
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr "Teljes ár"
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr "Ez a sortétel megkésett"
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr "Sortétel bevételezése"
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr "Készlet foglalások törlése"
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr "Vevőnek kiszállítva"
 
@@ -8628,237 +8691,245 @@ msgstr "Egységár módosítása"
 msgid "No matching line items"
 msgstr "Nincs egyező sortétel"
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr "Alkatrész tulajdonságok"
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr "Alkatrész létrehozási opciók"
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr "Alkatrész másolási opciók"
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr "Beszállítói opciók"
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr "Alkatrész kategória hozzáadása"
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr "Kezdeti készlet létrehozása"
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr "Kezdeti készlet tétel létrehozása ehhez az alkatrészhez"
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr "Kezdeti készlet mennyiség"
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr "Add meg a kezdeti készlet mennyiségét ennek az alkatrésznek"
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr "Válassz cél készlet helyet"
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr "Kategória paraméterek másolása"
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr "Paraméter sablonok másolása a kiválasztott alkatrész kategóriából"
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr "Beszállító adatok hozzáadása"
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr "Kezdeti beszállítói adatok létrehozása ehhez az alkatrészhez"
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr "Kép másolása"
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr "Kép másolása az eredeti alkatrészről"
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr "Alkatrészjegyzék másolása az eredeti alkatrészről"
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr "Paraméterek másolása"
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr "Parméterek másolása az eredeti alkatrészről"
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr "Felsőbb szintű alkatrész kategória"
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr "Alkatrész szerkesztése"
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr "Alkatrész módosítva"
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr "Alkatrész változat létrehozása"
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr "Értesítések beállítva erre a tételre"
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr "Értesítések beállítva erre a tételre"
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr "Értesítések kérése erre a tételre"
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr "Értesítések letiltva erre a tételre"
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr "Az alkatrészjegyzék jóváhagyása minden sortételt jóvá fog hagyni"
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr "Alkatrészjegyzék jóváhagyása"
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr "Alkatrészjegyzék jóvá lett hagyva"
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr "Alkatrészjegyzék másolása"
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr "Követésre kötelezett alkatrész"
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr "Virtuális alkatrész"
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr "Értesítésre beállított alkatrész"
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr "Értékesíthető alkatrész"
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr "Nincs több változat"
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr "Alkatrész kapcsolatok törlése"
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr "Alkatrész kapcsolatok törlése"
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr "Nincs alkatrész"
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr "Nincs kategória"
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr "Alacsony készlet"
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr "Megjelenítés listaként"
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr "Megjelenítés rácsnézetként"
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr "Megjelenítés fában"
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr "Értesítésre beállított kategória"
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr "Elérési út"
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr "Nincs a lekérdezéssel egyező teszt sablon"
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr "Teszt eredmény szerkesztése"
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr "Teszt eredmény törlése"
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr "Ez a teszt a szülő alkatrészhez lett felvéve"
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr "Teszt eredmény sablon szerkesztése"
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr "Teszt eredmény sablon törlése"
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr "Nincs ${human_name} információ"
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr "${human_name} szerkesztése"
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr "${human_name} törlése"
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr "Aktuális készlet"
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr "Ütemezett készlet mennyiség"
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr "Egységes ár"
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr "Egységes ár különbség"
 
@@ -8960,328 +9031,332 @@ msgstr "Add meg a kezdeti mennyiséget ehhez a készlet tételhez"
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr "Add meg az új készlet tételhez tartozó sorozatszámokat (vagy hagyd üresen)"
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr "Készlet tétel lemásolva"
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr "Készlet tétel létrehozva"
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr "Több készlet tétel létre lett hozva"
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr "Sorozatszám keresése"
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr "Sorozatszám megadása"
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr "Adj meg egy sorozatszámot"
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr "Nincs egyező sorozatszám"
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr "Több egyező eredmény is van"
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr "Készlet hozzárendelés jóváhagyása"
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr "Készlet vevőhöz rendelése"
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr "Figyelem: az összevonási művelet nem vonható vissza"
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr "Némi információ elveszik a készlet összevonás során"
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr "A készlettörténet törölve lesz az összevont tételeknél"
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr "A beszállítói alkatrész információk törlődnek az összevont tételeknél"
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr "Készlet összevonás megerősítése"
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr "Készlet tételek összevonása"
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr "Készlet áthelyezése"
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr "Áthelyezés"
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr "Leltározás"
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr "Mennyiség"
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr "Készlet csökkentése"
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr "Kivesz"
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr "Készlet növelése"
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr "Hozzáad"
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr "Készlet törlése"
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr "Egyedi követésre kötelezett tételeknél a menyiség nem módosítható"
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr "Készlet mennyiség megadása"
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr "Ki kell választanod legalább egy rendelkezésre álló készlet tételt"
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr "SIKER"
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr "SIKERTELEN"
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr "NINCS EREDMÉNY"
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr "Teszt sikeres"
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr "Teszt eredmény hozzáadása"
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr "Nincs teszt eredmény"
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr "Teszt dátuma"
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr "Teszt eredmény szerkesztése"
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr "Teszt eredmény törlése"
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr "Gyártásban"
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr "Beépítve készlet tételbe"
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr "Vevő rendeléshez hozzárendelve"
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr "Nincs hely megadva"
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr "Készlet tétel gyártás alatt"
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr "Készlet tétel hozzárendelve egy vevői rendeléshez"
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr "Készlet tétel hozzárendelve egy vevőhöz"
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr "Készlet tétel lejárt"
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr "Készlet tétel hamarosan lejár"
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr "Egyedi követésre kötelezett készlet tétel lefoglalva"
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr "Készlet tétel teljes egészében lefoglalva"
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr "Készlet tétel részben lefoglalva"
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr "Készlet tétel beépítve egy másikba"
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr "Készlet tétel elutasítva"
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr "Készlet tétel elveszett"
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr "Készlet tétel megsemmisült"
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr "Kimerült"
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr "Leltár"
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr "Beszállítói alkatrész nincs megadva"
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr "Nincs a lekérdezésnek megfelelő készlet tétel"
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr "tételek"
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr "batch-ek"
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr "helyek"
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr "Ismeretlen hely"
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr "Készlet állapot beállítása"
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr "Státuszkód kiválasztása"
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 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:2438
 msgid "Allocated Quantity"
 msgstr "Lefoglalt mennyiség"
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr "Részletek"
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr "A hely már nem létezik"
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr "Beszerzési megrendelés már nem létezik"
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr "Vevő már nem létezik"
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr "A készlet tétel már nem létezik"
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr "Hozzáadva"
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr "Eltávolítva"
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr "Készlettörténet bejegyzés szerkesztése"
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr "Készlettörténet bejegyzés törlése"
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr "Nincsenek beépített tételek"
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr "Készlet tétel kiszedése"
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 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:2931
+#: templates/js/translated/stock.js:2941
 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:2933
+#: templates/js/translated/stock.js:2943
 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:2934
+#: templates/js/translated/stock.js:2944
 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:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr "A készlet tétel egyedi követésre kötelezett és nem tartozik másik tételhez"
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr "Válaszd ki a beépítendő alkatrészt"
 
diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po
index e39c24e8c6..ff2e693a66 100644
--- a/InvenTree/locale/id/LC_MESSAGES/django.po
+++ b/InvenTree/locale/id/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Indonesian\n"
 "Language: id_ID\n"
@@ -122,7 +122,7 @@ msgstr ""
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr ""
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr ""
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr ""
 
@@ -152,11 +152,11 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr ""
 
@@ -193,17 +193,17 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr ""
 
@@ -212,7 +212,7 @@ msgstr ""
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr ""
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr ""
 
@@ -240,7 +240,7 @@ msgstr ""
 msgid "parent"
 msgstr ""
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr ""
 
@@ -501,7 +501,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr ""
 
@@ -648,7 +648,7 @@ msgstr ""
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr ""
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr ""
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr ""
@@ -692,10 +692,10 @@ msgstr ""
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr ""
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr ""
 
@@ -733,8 +733,8 @@ msgstr ""
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr ""
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr ""
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr ""
 
@@ -783,7 +783,7 @@ msgstr ""
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr ""
@@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
 #: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr ""
 
@@ -805,7 +805,7 @@ msgstr ""
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr ""
 
@@ -816,9 +816,9 @@ msgstr ""
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr ""
 
@@ -829,7 +829,7 @@ msgstr ""
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr ""
@@ -839,17 +839,17 @@ msgstr ""
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr ""
 
@@ -869,69 +869,69 @@ msgstr ""
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1168
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1199
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1256
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr ""
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr ""
 
@@ -998,7 +999,7 @@ msgstr ""
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr ""
 
@@ -1042,12 +1043,12 @@ msgstr ""
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr ""
 
@@ -1058,10 +1059,10 @@ msgstr ""
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr ""
 
@@ -1097,8 +1098,8 @@ msgstr ""
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr ""
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr ""
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr ""
 
@@ -1250,7 +1259,7 @@ msgstr ""
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr ""
@@ -1262,7 +1271,7 @@ msgstr ""
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr ""
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr ""
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr ""
 
@@ -1311,7 +1321,7 @@ msgstr ""
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr ""
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr ""
 
@@ -1340,7 +1350,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1431,8 +1441,8 @@ msgstr ""
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr ""
@@ -1441,27 +1451,27 @@ msgstr ""
 msgid "Build Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr ""
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr ""
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr ""
 
@@ -1485,12 +1495,8 @@ msgstr ""
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr ""
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
+msgid "Completed Outputs"
 msgstr ""
 
 #: build/views.py:73
@@ -1538,760 +1544,768 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr ""
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:631
+#: common/models.py:635
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr ""
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:672
+#: common/models.py:676
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr ""
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:698
+#: common/models.py:702
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:712
+#: common/models.py:716
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:719
+#: common/models.py:723
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr ""
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr ""
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr ""
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:904
+#: common/models.py:908
 msgid "days"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1193
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1200
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2463,7 +2477,7 @@ msgstr ""
 msgid "Link to external company information"
 msgstr ""
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr ""
 
@@ -2500,7 +2514,7 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr ""
@@ -2515,12 +2529,12 @@ msgstr ""
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr ""
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr ""
 
@@ -2528,11 +2542,11 @@ msgstr ""
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr ""
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr ""
 
@@ -2557,8 +2571,8 @@ msgstr ""
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr ""
 
@@ -2566,10 +2580,10 @@ msgstr ""
 msgid "Parameter value"
 msgstr ""
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr ""
 
@@ -2588,22 +2602,22 @@ msgstr ""
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr ""
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr ""
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr ""
 
@@ -2644,7 +2658,7 @@ msgstr ""
 msgid "Part packaging"
 msgstr ""
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr ""
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr ""
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr ""
@@ -2739,7 +2753,7 @@ msgstr ""
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr ""
 
@@ -2747,8 +2761,8 @@ msgstr ""
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr ""
 
@@ -2776,7 +2790,7 @@ msgstr ""
 msgid "Create new manufacturer part"
 msgstr ""
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr ""
 
@@ -2790,7 +2804,7 @@ msgstr ""
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr ""
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr ""
 
@@ -2840,13 +2854,13 @@ msgstr ""
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr ""
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
@@ -2863,7 +2877,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr ""
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr ""
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr ""
 
@@ -2979,7 +2993,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr ""
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr ""
 
@@ -3030,10 +3044,10 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr ""
 
@@ -3056,7 +3070,7 @@ msgstr ""
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr ""
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr ""
 
@@ -3328,8 +3342,8 @@ msgstr ""
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr ""
 
@@ -3339,7 +3353,7 @@ msgstr ""
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr ""
@@ -3348,9 +3362,9 @@ msgstr ""
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr ""
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr ""
 
@@ -3679,9 +3693,9 @@ msgstr ""
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr ""
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr ""
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr ""
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr ""
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr ""
 
@@ -3992,448 +4022,448 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr ""
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr ""
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr ""
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr ""
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr ""
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr ""
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr ""
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr ""
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr ""
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr ""
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr ""
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr ""
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2741
+#: part/models.py:2749
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:2747
+#: part/models.py:2755
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
 msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
+msgid "This category contains %(n)s child categories"
 msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
 msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
 msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
 msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
 msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr ""
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr ""
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr ""
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr ""
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr ""
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr ""
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr ""
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr ""
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr ""
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr ""
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr ""
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr ""
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr ""
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr ""
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr ""
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr ""
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr ""
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr ""
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr ""
 
@@ -5363,7 +5394,7 @@ msgstr ""
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr ""
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr ""
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr ""
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr ""
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr ""
 
@@ -5704,228 +5735,228 @@ msgstr ""
 msgid "Confirm removal of installed stock items"
 msgstr ""
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:474
+#: stock/models.py:489
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr ""
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr ""
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr ""
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr ""
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr ""
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr ""
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr ""
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr ""
 msgid "Print labels"
 msgstr ""
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr ""
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr ""
 
@@ -6448,7 +6507,7 @@ msgstr ""
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr ""
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr ""
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr ""
@@ -7607,7 +7666,7 @@ msgstr ""
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr ""
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr ""
 
@@ -7913,137 +7972,141 @@ msgstr ""
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr ""
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr ""
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr ""
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr ""
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr ""
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr ""
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr ""
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr ""
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr ""
 
@@ -8628,237 +8691,245 @@ msgstr ""
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr ""
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr ""
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr ""
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr ""
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr ""
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr ""
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr ""
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr ""
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr ""
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr ""
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr ""
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr ""
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr ""
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr ""
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr ""
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr ""
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr ""
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr ""
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr ""
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr ""
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr ""
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr ""
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr ""
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr ""
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr ""
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr ""
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr ""
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr ""
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr ""
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr ""
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr ""
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr ""
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr ""
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr ""
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr ""
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr ""
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr ""
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr ""
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr ""
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr ""
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr ""
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po
index b95278f630..2c45e07379 100644
--- a/InvenTree/locale/it/LC_MESSAGES/django.po
+++ b/InvenTree/locale/it/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Italian\n"
 "Language: it_IT\n"
@@ -122,7 +122,7 @@ msgstr "File mancante"
 msgid "Missing external link"
 msgstr "Link esterno mancante"
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr "Allegato"
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr "Seleziona file da allegare"
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr "Link"
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr "Link a URL esterno"
 
@@ -152,11 +152,11 @@ msgstr "Commento"
 msgid "File comment"
 msgstr "Commento del file"
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr "Utente"
 
@@ -193,17 +193,17 @@ msgstr "Errore nella rinominazione del file"
 msgid "Invalid choice"
 msgstr "Scelta non valida"
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr "Nome"
 
@@ -212,7 +212,7 @@ msgstr "Nome"
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr "Nome"
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr "Descrizione"
 
@@ -240,7 +240,7 @@ msgstr "Descrizione (opzionale)"
 msgid "parent"
 msgstr "genitore"
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr "Deve essere un numero valido"
 
@@ -501,7 +501,7 @@ msgstr "Diviso dall'elemento genitore"
 msgid "Split child item"
 msgstr "Dividi elemento figlio"
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr ""
 
@@ -648,7 +648,7 @@ msgstr ""
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr "Ordine di Produzione"
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr ""
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr "Riferimento"
@@ -692,10 +692,10 @@ msgstr ""
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr ""
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr "Articolo"
 
@@ -733,8 +733,8 @@ msgstr "Numero di riferimento ordine di vendita"
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr "Posizione Di Origine"
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr ""
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr ""
 
@@ -783,7 +783,7 @@ msgstr ""
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr "Data di creazione"
@@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
 #: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr "Data di completamento"
 
@@ -805,7 +805,7 @@ msgstr "Data di completamento"
 msgid "completed by"
 msgstr "Completato da"
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr "Rilasciato da"
 
@@ -816,9 +816,9 @@ msgstr ""
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr "Responsabile"
 
@@ -829,7 +829,7 @@ msgstr ""
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr "Collegamento esterno"
@@ -839,17 +839,17 @@ msgstr "Collegamento esterno"
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr "Note"
 
@@ -869,69 +869,69 @@ msgstr ""
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1168
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr "La quantità assegnata ({q}) non deve essere maggiore della quantità disponibile ({a})"
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr "L'articolo in giacenza è sovrallocato"
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 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:1199
 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:1256
 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:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr "Produzione"
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr "Articoli in magazzino"
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr "Origine giacenza articolo"
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr "Origine giacenza articolo"
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr "Quantità"
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr "Installa in"
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr "Destinazione articolo in giacenza"
 
@@ -998,7 +999,7 @@ msgstr "Inserisci la quantità per l'output di compilazione"
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr "La quantità deve essere maggiore di zero"
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr "Codice Seriale"
 
@@ -1042,12 +1043,12 @@ msgstr ""
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr "Posizione"
 
@@ -1058,10 +1059,10 @@ msgstr "Posizione per gli output di build completati"
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr "Stato"
 
@@ -1097,8 +1098,8 @@ msgstr ""
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr "Distinta base (Bom)"
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr "Deve essere indicata l'allocazione dell'articolo"
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr ""
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr "Data scadenza"
 
@@ -1250,7 +1259,7 @@ msgstr "In ritardo"
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr "Completato"
@@ -1262,7 +1271,7 @@ msgstr "Completato"
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr "Ordini di Vendita"
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr "Inviato da"
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr "Output Incompleti"
 
@@ -1311,7 +1321,7 @@ msgstr ""
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr "Lotto"
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr "Creato"
 
@@ -1340,7 +1350,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1431,8 +1441,8 @@ msgstr ""
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr "Allegati"
@@ -1441,27 +1451,27 @@ msgstr "Allegati"
 msgid "Build Notes"
 msgstr "Genera Note"
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr "Modifica Note"
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr "Assegnazione Completa"
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr "Tutte le giacenze non tracciate sono state assegnate"
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr ""
 
@@ -1485,12 +1495,8 @@ msgstr "Visualizzazione elenco"
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr ""
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
+msgid "Completed Outputs"
 msgstr ""
 
 #: build/views.py:73
@@ -1538,760 +1544,768 @@ msgstr "{name.title()} File"
 msgid "Select {name} file to upload"
 msgstr "Seleziona il file {name} da caricare"
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr "Valore impostazioni"
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr "Il valore specificato non è un opzione valida"
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr "Il valore deve essere un valore booleano"
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr "Il valore deve essere un intero"
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr "La stringa chiave deve essere univoca"
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr "Nessun gruppo"
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr "Riavvio richiesto"
 
-#: common/models.py:631
+#: common/models.py:635
 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:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr "Nome Istanza InvenTree"
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr "Descrittore stringa per l'istanza del server"
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr "Utilizza nome istanza"
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr "Usa il nome dell'istanza nella barra del titolo"
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr "Nome azienda"
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr "Nome interno dell'azienda"
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr "URL Base"
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr "URL di base per l'istanza del server"
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr "Valuta predefinita"
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr "Valuta predefinita"
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr "Scarica dall'URL"
 
-#: common/models.py:672
+#: common/models.py:676
 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:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Supporto Codice A Barre"
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr "Abilita supporto scanner codici a barre"
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr "IPN Regex"
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Schema di espressione regolare per l'articolo corrispondente IPN"
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr "Consenti duplicati IPN"
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Permetti a più articoli di condividere lo stesso IPN"
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr "Permetti modifiche al part number interno (IPN)"
 
-#: common/models.py:698
+#: common/models.py:702
 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:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr "Copia I Dati Della distinta base dell'articolo"
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr "Copia I Dati Parametro dell'articolo"
 
-#: common/models.py:712
+#: common/models.py:716
 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:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:719
+#: common/models.py:723
 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:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr "Copia Template Parametri Categoria"
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr "Copia i modelli dei parametri categoria quando si crea un articolo"
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr "Template"
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr "Gli articoli sono modelli per impostazione predefinita"
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr "Assemblaggio"
 
-#: common/models.py:740
+#: common/models.py:744
 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:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr "Componente"
 
-#: common/models.py:747
+#: common/models.py:751
 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:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr "Acquistabile"
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr "Gli articoli sono acquistabili per impostazione predefinita"
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr "Vendibile"
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr "Gli articoli sono acquistabili per impostazione predefinita"
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr "Tracciabile"
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr "Gli articoli sono tracciabili per impostazione predefinita"
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr "Virtuale"
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr "Gli articoli sono virtuali per impostazione predefinita"
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr "Mostra l'importazione nelle viste"
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr "Mostra la procedura guidata di importazione in alcune viste articoli"
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr "Mostra il prezzo nei moduli"
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr "Mostra il prezzo dell'articolo in alcuni moduli"
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr "Mostra il prezzo nella BOM"
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr "Includi le informazioni sui prezzi nelle tabelle BOM"
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr "Mostra articoli correlati"
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr "Visualizza parti correlate per ogni articolo"
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr "Crea giacenza iniziale"
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr "Crea giacenza iniziale sulla creazione articolo"
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr "Prezzi interni"
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr "Abilita prezzi interni per gli articoli"
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr "Prezzo interno come BOM-Price"
 
-#: common/models.py:841
+#: common/models.py:845
 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:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr "Formato di visualizzazione del nome articolo"
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr "Formato per visualizzare il nome dell'articolo"
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr "Abilita Report di Stampa"
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr "Abilita generazione di report di stampa"
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Modalità Debug"
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Genera report in modalità debug (output HTML)"
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr "Dimensioni pagina"
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr "Dimensione predefinita della pagina per i report PDF"
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr "Stampa di prova"
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr "Abilita generazione di stampe di prova"
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr "Scadenza giacenza"
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr "Abilita funzionalità di scadenza della giacenza"
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr "Vendi giacenza scaduta"
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr "Consenti la vendita di stock scaduti"
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 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:904
+#: common/models.py:908
 msgid "days"
 msgstr "giorni"
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr "Controllo della proprietà della giacenza"
 
-#: common/models.py:917
+#: common/models.py:921
 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:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr "Referenza ordine d'acquisto"
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr "Abilita password dimenticata"
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr "Abilita la funzione password dimenticata nelle pagine di accesso"
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr "Abilita registrazione"
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr "Abilita auto-registrazione per gli utenti nelle pagine di accesso"
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr "SSO abilitato"
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr "Abilita SSO nelle pagine di accesso"
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr "Email richiesta"
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr "Richiedi all'utente di fornire una email al momento dell'iscrizione"
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr "Riempimento automatico degli utenti SSO"
 
-#: common/models.py:972
+#: common/models.py:976
 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:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole"
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr "Mostra le categorie sottoscritte"
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr "Mostra le categorie dei componenti sottoscritti nella homepage"
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr "Mostra ultimi articoli"
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr "Visualizzazione dell'etichetta in linea"
 
-#: common/models.py:1189
+#: common/models.py:1193
 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:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr "Visualizzazione dell'etichetta in linea"
 
-#: common/models.py:1196
+#: common/models.py:1200
 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:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr "Risultati Dell'Anteprima Di Ricerca"
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr "Prezzo"
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr "Attivo"
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2463,7 +2477,7 @@ msgstr "Punto di contatto"
 msgid "Link to external company information"
 msgstr "Collegamento alle informazioni aziendali esterne"
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr "Immagine"
 
@@ -2500,7 +2514,7 @@ msgstr "Valuta"
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr "Articolo di base"
@@ -2515,12 +2529,12 @@ msgstr "Seleziona articolo"
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr "Produttore"
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr "Seleziona Produttore"
 
@@ -2528,11 +2542,11 @@ msgstr "Seleziona Produttore"
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr "Codice articolo produttore (MPN)"
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr "Codice articolo produttore"
 
@@ -2557,8 +2571,8 @@ msgstr "Nome parametro"
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr "Valore"
 
@@ -2566,10 +2580,10 @@ msgstr "Valore"
 msgid "Parameter value"
 msgstr "Valore del parametro"
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr "Unità"
 
@@ -2588,22 +2602,22 @@ msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr "Fornitore"
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr "Seleziona fornitore"
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr "SKU"
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr "Descrizione articolo fornitore"
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr "Nota"
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr "costo base"
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr "Onere minimo (ad esempio tassa di stoccaggio)"
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr "Confezionamento"
 
@@ -2644,7 +2658,7 @@ msgstr "Confezionamento"
 msgid "Part packaging"
 msgstr "Imballaggio del pezzo"
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr "multiplo"
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr "Scarica immagine dall'URL"
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr "Cliente"
@@ -2739,7 +2753,7 @@ msgstr "Crea nuovo fornitore"
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr "Nuovo fornitore articolo"
 
@@ -2747,8 +2761,8 @@ msgstr "Nuovo fornitore articolo"
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr "Opzioni"
 
@@ -2776,7 +2790,7 @@ msgstr ""
 msgid "Create new manufacturer part"
 msgstr ""
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr ""
 
@@ -2790,7 +2804,7 @@ msgstr "Giacenza Fornitore"
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr ""
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr ""
 
@@ -2840,13 +2854,13 @@ msgstr ""
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr "Elimina articoli fornitore?"
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr "Tutte gli articoli del fornitore selezionati saranno eliminati"
 
@@ -2863,7 +2877,7 @@ msgstr "Produttori"
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr "Articoli ordinati"
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr "Fornitori"
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr "Elimina articolo fornitore"
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr "Elimina"
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr "Parametri"
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr "Elimina il parametro"
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr "Aggiungi parametro"
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr "Articolo Fornitore"
 
@@ -2979,7 +2993,7 @@ msgstr "Crea nuova allocazione magazzino"
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr "Nuovo Elemento in giacenza"
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr "Ordini articoli fornitore"
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr "Ordine Articolo"
 
@@ -3030,10 +3044,10 @@ msgstr "Cancella riduzione di prezzo"
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr "Magazzino"
 
@@ -3056,7 +3070,7 @@ msgstr "Prezzi"
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr "Articoli in magazzino"
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr ""
 
@@ -3328,8 +3342,8 @@ msgstr ""
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr ""
 
@@ -3339,7 +3353,7 @@ msgstr "Articolo Fornitore"
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr ""
@@ -3348,9 +3362,9 @@ msgstr ""
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr ""
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr "Stato dell'ordine"
 
@@ -3679,9 +3693,9 @@ msgstr "Seleziona l'articolo del fornitore"
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr "Elimina riga"
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr ""
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr "Specifica la posizione per lo stock iniziale"
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr ""
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr "Posizione Predefinita"
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr "Disponibilità in magazzino"
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr "Ordinato"
 
@@ -3992,448 +4022,448 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr "Digita la quantità per il calcolo del prezzo"
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr "Posizione predefinita per gli articoli di questa categoria"
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr "Keywords predefinite"
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr "Parole chiave predefinite per gli articoli in questa categoria"
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "Categoria Articoli"
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr "Categorie Articolo"
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr "Articoli"
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr "Scelta non valida per l'articolo principale"
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr "I successivi numeri di serie disponibili sono"
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr "Il prossimo numero di serie disponibile è"
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr "Il numero di serie più recente è"
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "Non è consentito duplicare IPN nelle impostazioni dell'articolo"
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr "Nome articolo"
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr "È Template"
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr "Quest'articolo è un articolo di template?"
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr "Questa parte è una variante di un altro articolo?"
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr "Variante Di"
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr "Descrizione articolo"
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr "Parole Chiave"
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr "Parole chiave per migliorare la visibilità nei risultati di ricerca"
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr "Categoria"
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr "Categoria articolo"
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr "IPN - Numero di riferimento interno"
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr "Numero Dell'articolo Interno"
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr "Numero di revisione o di versione"
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr "Revisione"
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr "Dove viene normalmente immagazzinato questo articolo?"
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr "Fornitore predefinito"
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr "Articolo fornitore predefinito"
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr "Scadenza Predefinita"
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr "Scadenza (in giorni) per gli articoli in giacenza di questo pezzo"
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr "Scorta Minima"
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr "Livello minimo di giacenza consentito"
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr "Unità di conservazione delle scorte per quest'articolo"
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr "Quest'articolo può essere acquistato da fornitori esterni?"
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr "Questo pezzo può essere venduto ai clienti?"
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr "Quest'articolo è attivo?"
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr "È una parte virtuale, come un prodotto software o una licenza?"
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr "Note dell'articolo - supporta la formattazione Markdown"
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr "BOM checksum"
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr "Descrizione Di Prova"
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr ""
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr "Codice Articolo"
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2741
+#: part/models.py:2749
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr "Consenti Le Varianti"
 
-#: part/models.py:2747
+#: part/models.py:2755
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
-msgstr "Sei sicuro di voler eliminare la categoria"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
+msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
-msgstr "Questa categoria contiene %(count)s sottocategorie"
+msgid "This category contains %(n)s child categories"
+msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
-msgstr "Se questa categoria viene eliminata, queste sottocategorie verranno spostate al"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
+msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
-msgstr "categoria"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
+msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
-msgstr "categoria articolo di livello superiore"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
+msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
-msgstr "Questa categoria contiene %(count)s sottocategorie"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
+msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr "Se questa categoria viene eliminata, queste parti verranno spostate nella categoria superiore %(path)s"
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr ""
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr ""
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr ""
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr "Assegnazione Ordine Di Vendita"
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr ""
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr ""
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr ""
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr "Articoli correlati"
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr ""
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr "Distinta base"
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr ""
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr "Fornitori articoli"
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr "Componenti Produttori"
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr ""
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr "Articoli correlati"
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr ""
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr ""
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr "Inattivo"
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr ""
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr "Imposta categoria per i seguenti articoli"
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr "Nessuna giacenza"
 
@@ -5363,7 +5394,7 @@ msgstr ""
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr "Modifica Categoria Articoli"
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr ""
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr "Data"
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr "Seriale"
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr "Data di Scadenza"
 
@@ -5704,228 +5735,228 @@ msgstr "Conferma la disinstallazione"
 msgid "Confirm removal of installed stock items"
 msgstr ""
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr "Seleziona Owner"
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:474
+#: stock/models.py:489
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr "Articolo base"
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr "Ubicazione magazzino"
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr "Installato In"
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr "Quantità disponibile"
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr "Elimina al esaurimento"
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr ""
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr ""
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr "Ultimo aggiornamento"
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr ""
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr "Nessuna posizione impostata"
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr "Azioni di stampa"
 msgid "Print labels"
 msgstr "Stampa etichette"
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr "Sei sicuro di voler eliminare questa posizione?"
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr ""
 
@@ -6448,7 +6507,7 @@ msgstr ""
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr "Crea una nuova Posizione di Giacenza"
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr "Quantità richiesta"
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr "Disponibile"
@@ -7607,7 +7666,7 @@ msgstr ""
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr ""
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr ""
 
@@ -7913,137 +7972,141 @@ msgstr "Posizione non specificata"
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr "Modifica allocazione magazzino"
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr "Elimina posizione giacenza"
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr "Modifica Posizione"
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr "Rimuovi Posizione"
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr "Seleziona Articoli"
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr "Specificare il quantitativo assegnato allo stock"
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 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:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr "Conferma l'assegnazione della giacenza"
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr "Nessuna posizione di magazzino corrispondente"
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr ""
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr ""
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr "Modifica parametro"
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr "Elimina il parametro"
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr "Modifica parametro"
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr "Elimina Parametri"
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr "NO"
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr ""
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr "Quantità da ricevere"
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr "Stato giacenza"
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr "Totale"
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr "Prezzo Unitario"
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr "Prezzo Totale"
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr "Elimina posizione giacenza"
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr "Spedito al cliente"
 
@@ -8628,237 +8691,245 @@ msgstr ""
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr "Attributi Articolo"
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr ""
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr ""
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr "Opzioni Fornitore"
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr "Aggiungi Categoria Articolo"
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr "Crea giacenza iniziale"
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr "Crea una giacenza iniziale per quest'articolo"
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr "Quantità iniziale"
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr "Selezione la posizione di destinazione della giacenza"
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr "Copia Parametri Categoria"
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr "Aggiungi Dati Fornitore"
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr "Copia immagine"
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr "Copia immagine dall'articolo originale"
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr "Copia parametri"
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr "Categoria articolo principale"
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr "Modifica l'articolo"
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr "Articolo modificato"
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr ""
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr "Convalida la distinta dei materiali"
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr "Parte tracciabile"
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr "Parte virtuale"
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr "Parte sottoscritta"
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr "Parte vendibile"
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr "Nessuna variante trovata"
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr "Elimina relazione tra i componenti"
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr "Nessun articolo trovato"
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr "Nessuna categoria"
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr "In esaurimento"
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr "Visualizza come elenco"
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr "Visualizza come griglia"
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr "Visualizza come struttura ad albero"
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr "Categoria sottoscritta"
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr "Percorso"
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr "Nessun modello di test corrispondente"
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr "Modificare il risultato del test"
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr "Cancellare il risultato del test"
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr "Modifica ${human_name}"
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr "Elimina ${human_name}"
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr "Prezzo Singolo"
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr "Inserisci quantità iniziale per questo articolo in giacenza"
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr "Inserire i numeri di serie per la nuova giacenza (o lasciare vuoto)"
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr "Crea nuova allocazione magazzino"
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr "Creato più elementi stock"
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr ""
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr ""
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr ""
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr ""
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr ""
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr ""
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr "Trasferisci giacenza"
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr "Sposta"
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr "Conta giacenza"
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr "Conta"
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr "Rimuovi giacenza"
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr "Prendi"
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr "Aggiungi giacenza"
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr "Aggiungi"
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr "Elimina Stock"
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr "Specificare la quantità di magazzino"
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr "Devi selezionare almeno un articolo disponibile"
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr "PASS"
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr "FAIL"
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr "NESSUN RISULTATO"
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr "Aggiungi risultato test"
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr "Nessun risultato di prova trovato"
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr "In produzione"
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr "Installato nell'elemento stock"
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr "Assegnato all'ordine di vendita"
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr "Nessuna giacenza impostata"
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr "L'articolo di magazzino è in produzione"
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr "Articolo stock assegnato al cliente"
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr "L'articolo stock è scaduto"
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr "Articolo in giacenza prossimo alla scadenza"
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr "L'elemento stock è stato installato in un altro articolo"
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr "L'articolo stock è stato rifiutato"
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr "Esaurito"
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr "Inventario"
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr "elementi"
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr ""
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr "posizione"
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr "Posizione non definita"
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr "La posizione non esiste più"
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr "Aggiunto"
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr "Rimosso"
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po
index 7f02fd2bff..c8aad01227 100644
--- a/InvenTree/locale/ja/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ja/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Japanese\n"
 "Language: ja_JP\n"
@@ -122,7 +122,7 @@ msgstr ""
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr "添付ファイル"
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr "添付ファイルを選択"
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr ""
 
@@ -152,11 +152,11 @@ msgstr "コメント:"
 msgid "File comment"
 msgstr "ファイルコメント"
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr "ユーザー"
 
@@ -193,17 +193,17 @@ msgstr ""
 msgid "Invalid choice"
 msgstr "無効な選択です"
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr "お名前"
 
@@ -212,7 +212,7 @@ msgstr "お名前"
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr "お名前"
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr "説明"
 
@@ -240,7 +240,7 @@ msgstr "説明 (オプション)"
 msgid "parent"
 msgstr "親"
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr "有効な数字でなければなりません"
 
@@ -501,7 +501,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr ""
 
@@ -648,7 +648,7 @@ msgstr ""
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr ""
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr ""
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr ""
@@ -692,10 +692,10 @@ msgstr ""
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr ""
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr "パーツ"
 
@@ -733,8 +733,8 @@ msgstr ""
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr ""
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr ""
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr ""
 
@@ -783,7 +783,7 @@ msgstr ""
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr ""
@@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
 #: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr ""
 
@@ -805,7 +805,7 @@ msgstr ""
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr ""
 
@@ -816,9 +816,9 @@ msgstr ""
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr ""
 
@@ -829,7 +829,7 @@ msgstr ""
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr ""
@@ -839,17 +839,17 @@ msgstr ""
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr ""
 
@@ -869,69 +869,69 @@ msgstr ""
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1168
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1199
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1256
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr "パーツを割り当てるためにビルドする"
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr ""
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr ""
 
@@ -998,7 +999,7 @@ msgstr ""
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr ""
 
@@ -1042,12 +1043,12 @@ msgstr ""
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr ""
 
@@ -1058,10 +1059,10 @@ msgstr ""
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr ""
 
@@ -1097,8 +1098,8 @@ msgstr ""
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr ""
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr ""
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr ""
 
@@ -1250,7 +1259,7 @@ msgstr ""
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr ""
@@ -1262,7 +1271,7 @@ msgstr ""
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr ""
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr ""
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr ""
 
@@ -1311,7 +1321,7 @@ msgstr ""
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr ""
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr ""
 
@@ -1340,7 +1350,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1431,8 +1441,8 @@ msgstr ""
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr ""
@@ -1441,27 +1451,27 @@ msgstr ""
 msgid "Build Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr ""
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr ""
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr ""
 
@@ -1485,12 +1495,8 @@ msgstr ""
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr ""
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
+msgid "Completed Outputs"
 msgstr ""
 
 #: build/views.py:73
@@ -1538,760 +1544,768 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr ""
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:631
+#: common/models.py:635
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr ""
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:672
+#: common/models.py:676
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr ""
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:698
+#: common/models.py:702
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:712
+#: common/models.py:716
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:719
+#: common/models.py:723
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr "テンプレート"
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr "パーツはデフォルトのテンプレートです"
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr "アセンブリ"
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr "パーツはデフォルトで他のコンポーネントから組み立てることができます"
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr "コンポーネント"
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr "パーツはデフォルトでサブコンポーネントとして使用できます"
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr "購入可能"
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr "パーツはデフォルトで購入可能です"
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr "パーツはデフォルトで販売可能です"
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr "追跡可能"
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr "パーツはデフォルトで追跡可能です"
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr ""
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:904
+#: common/models.py:908
 msgid "days"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1193
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1200
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2463,7 +2477,7 @@ msgstr ""
 msgid "Link to external company information"
 msgstr ""
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr ""
 
@@ -2500,7 +2514,7 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr ""
@@ -2515,12 +2529,12 @@ msgstr ""
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr ""
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr ""
 
@@ -2528,11 +2542,11 @@ msgstr ""
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr ""
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr ""
 
@@ -2557,8 +2571,8 @@ msgstr ""
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr ""
 
@@ -2566,10 +2580,10 @@ msgstr ""
 msgid "Parameter value"
 msgstr ""
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr ""
 
@@ -2588,22 +2602,22 @@ msgstr ""
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr ""
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr ""
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr ""
 
@@ -2644,7 +2658,7 @@ msgstr ""
 msgid "Part packaging"
 msgstr ""
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr ""
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr ""
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr ""
@@ -2739,7 +2753,7 @@ msgstr "新しいサプライヤー・パーツを作成"
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr "新しいサプライヤー・パーツ"
 
@@ -2747,8 +2761,8 @@ msgstr "新しいサプライヤー・パーツ"
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr ""
 
@@ -2776,7 +2790,7 @@ msgstr "メーカー・パーツ"
 msgid "Create new manufacturer part"
 msgstr "新しいメーカー・パーツを作成"
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr "新しいメーカ―・パーツ"
 
@@ -2790,7 +2804,7 @@ msgstr ""
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr ""
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr ""
 
@@ -2840,13 +2854,13 @@ msgstr ""
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr ""
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
@@ -2863,7 +2877,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr "パーツの注文"
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr ""
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr ""
 
@@ -2979,7 +2993,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr ""
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr ""
 
@@ -3030,10 +3044,10 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr ""
 
@@ -3056,7 +3070,7 @@ msgstr ""
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr ""
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr ""
 
@@ -3328,8 +3342,8 @@ msgstr ""
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr ""
 
@@ -3339,7 +3353,7 @@ msgstr ""
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr ""
@@ -3348,9 +3362,9 @@ msgstr ""
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr ""
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr ""
 
@@ -3679,9 +3693,9 @@ msgstr ""
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr ""
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr ""
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr ""
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr ""
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr ""
 
@@ -3992,448 +4022,448 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr "パーツ"
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr ""
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr ""
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr ""
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr ""
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr ""
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr ""
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr ""
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr ""
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr ""
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr ""
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr ""
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2741
+#: part/models.py:2749
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:2747
+#: part/models.py:2755
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
 msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
+msgid "This category contains %(n)s child categories"
 msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
 msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
 msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
 msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
 msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr ""
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr ""
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr ""
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr ""
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr ""
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr ""
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr ""
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr ""
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr ""
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr ""
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr ""
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr ""
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr ""
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr ""
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr ""
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr ""
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr ""
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr ""
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr ""
 
@@ -5363,7 +5394,7 @@ msgstr ""
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr ""
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr ""
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr ""
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr ""
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr ""
 
@@ -5704,228 +5735,228 @@ msgstr ""
 msgid "Confirm removal of installed stock items"
 msgstr ""
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:474
+#: stock/models.py:489
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr ""
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr ""
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr ""
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr ""
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr ""
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr ""
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr ""
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr ""
 msgid "Print labels"
 msgstr ""
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr ""
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr ""
 
@@ -6448,7 +6507,7 @@ msgstr ""
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr ""
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr ""
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr ""
@@ -7607,7 +7666,7 @@ msgstr ""
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr ""
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr ""
 
@@ -7913,137 +7972,141 @@ msgstr ""
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr ""
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr ""
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr ""
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr ""
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr ""
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr ""
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr ""
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr ""
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr ""
 
@@ -8628,237 +8691,245 @@ msgstr ""
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr ""
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr ""
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr ""
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr ""
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr ""
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr ""
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr ""
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr ""
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr ""
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr ""
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr ""
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr ""
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr ""
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr ""
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr ""
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr ""
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr ""
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr ""
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr ""
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr ""
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr ""
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr ""
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr ""
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr ""
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr ""
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr ""
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr ""
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr ""
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr ""
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr ""
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr ""
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr ""
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr ""
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr ""
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr ""
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr ""
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr ""
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr ""
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr ""
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr ""
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr ""
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po
index 235818484b..c991764112 100644
--- a/InvenTree/locale/ko/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ko/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Korean\n"
 "Language: ko_KR\n"
@@ -122,7 +122,7 @@ msgstr ""
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr "첨부파일"
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr "첨부할 파일을 선택하세요"
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr "링크"
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr "외부 URL로 링크"
 
@@ -152,11 +152,11 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr "사용자"
 
@@ -193,17 +193,17 @@ msgstr "파일 이름 바꾸기 오류"
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr "이름"
 
@@ -212,7 +212,7 @@ msgstr "이름"
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr "이름"
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr "설명"
 
@@ -240,7 +240,7 @@ msgstr "설명 (선택 사항)"
 msgid "parent"
 msgstr ""
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr "유효한 숫자여야 합니다"
 
@@ -501,7 +501,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr ""
 
@@ -648,7 +648,7 @@ msgstr ""
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr ""
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr ""
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr ""
@@ -692,10 +692,10 @@ msgstr ""
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr ""
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr ""
 
@@ -733,8 +733,8 @@ msgstr ""
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr ""
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr ""
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr ""
 
@@ -783,7 +783,7 @@ msgstr ""
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr ""
@@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
 #: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr ""
 
@@ -805,7 +805,7 @@ msgstr ""
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr ""
 
@@ -816,9 +816,9 @@ msgstr ""
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr ""
 
@@ -829,7 +829,7 @@ msgstr ""
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr "외부 링크"
@@ -839,17 +839,17 @@ msgstr "외부 링크"
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr ""
 
@@ -869,69 +869,69 @@ msgstr ""
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1168
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1199
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1256
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr ""
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr "수량"
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr ""
 
@@ -998,7 +999,7 @@ msgstr ""
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr "수량 값은 0보다 커야 합니다"
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr "일련번호"
 
@@ -1042,12 +1043,12 @@ msgstr ""
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr "위치"
 
@@ -1058,10 +1059,10 @@ msgstr ""
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr "상태"
 
@@ -1097,8 +1098,8 @@ msgstr ""
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr ""
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr ""
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr ""
 
@@ -1250,7 +1259,7 @@ msgstr ""
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr ""
@@ -1262,7 +1271,7 @@ msgstr ""
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr ""
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr ""
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr ""
 
@@ -1311,7 +1321,7 @@ msgstr ""
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr ""
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr ""
 
@@ -1340,7 +1350,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1431,8 +1441,8 @@ msgstr ""
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr ""
@@ -1441,27 +1451,27 @@ msgstr ""
 msgid "Build Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr ""
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr ""
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr ""
 
@@ -1485,12 +1495,8 @@ msgstr ""
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr ""
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
+msgid "Completed Outputs"
 msgstr ""
 
 #: build/views.py:73
@@ -1538,760 +1544,768 @@ msgstr "{name.title()} 파일"
 msgid "Select {name} file to upload"
 msgstr "업로드할 {name} 파일을 선택하세요"
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr ""
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr "재시작 필요"
 
-#: common/models.py:631
+#: common/models.py:635
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr ""
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr "회사명"
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr "기본 통화"
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr "기본 통화"
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr "URL에서 다운로드"
 
-#: common/models.py:672
+#: common/models.py:676
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "바코드 지원"
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr ""
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:698
+#: common/models.py:702
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:712
+#: common/models.py:716
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:719
+#: common/models.py:723
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr ""
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr ""
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr "구입 가능"
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr "판매 가능"
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "디버그 모드"
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr "페이지 크기"
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr "PDF 보고서 기본 페이지 크기"
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr ""
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:904
+#: common/models.py:908
 msgid "days"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr "SSO 활성화"
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr "로그인 페이지에서 SSO 활성화"
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr "이메일 필요"
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr "두 번 보내기"
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1193
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1200
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2463,7 +2477,7 @@ msgstr ""
 msgid "Link to external company information"
 msgstr ""
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr "이미지"
 
@@ -2500,7 +2514,7 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr ""
@@ -2515,12 +2529,12 @@ msgstr ""
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr ""
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr ""
 
@@ -2528,11 +2542,11 @@ msgstr ""
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr ""
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr ""
 
@@ -2557,8 +2571,8 @@ msgstr ""
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr ""
 
@@ -2566,10 +2580,10 @@ msgstr ""
 msgid "Parameter value"
 msgstr ""
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr ""
 
@@ -2588,22 +2602,22 @@ msgstr ""
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr ""
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr "SKU"
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr ""
 
@@ -2644,7 +2658,7 @@ msgstr ""
 msgid "Part packaging"
 msgstr ""
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr ""
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr "URL에서 이미지 다운로드"
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr "고객"
@@ -2739,7 +2753,7 @@ msgstr ""
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr ""
 
@@ -2747,8 +2761,8 @@ msgstr ""
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr ""
 
@@ -2776,7 +2790,7 @@ msgstr ""
 msgid "Create new manufacturer part"
 msgstr ""
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr ""
 
@@ -2790,7 +2804,7 @@ msgstr ""
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr ""
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr ""
 
@@ -2840,13 +2854,13 @@ msgstr ""
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr ""
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
@@ -2863,7 +2877,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr ""
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr "삭제"
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr ""
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr ""
 
@@ -2979,7 +2993,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr ""
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr ""
 
@@ -3030,10 +3044,10 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr ""
 
@@ -3056,7 +3070,7 @@ msgstr ""
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr ""
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr ""
 
@@ -3328,8 +3342,8 @@ msgstr ""
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr ""
 
@@ -3339,7 +3353,7 @@ msgstr ""
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr ""
@@ -3348,9 +3362,9 @@ msgstr ""
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr ""
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr ""
 
@@ -3679,9 +3693,9 @@ msgstr ""
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr ""
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr ""
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr ""
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr ""
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr ""
 
@@ -3992,448 +4022,448 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr ""
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr ""
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr ""
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr ""
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr ""
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr ""
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr ""
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr ""
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr ""
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr ""
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr ""
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr "데이터"
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr ""
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2741
+#: part/models.py:2749
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:2747
+#: part/models.py:2755
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
 msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
+msgid "This category contains %(n)s child categories"
 msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
 msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
 msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
 msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
 msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr ""
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr ""
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr ""
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr ""
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr ""
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr ""
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr ""
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr ""
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr "부품 명세서"
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr ""
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr ""
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr ""
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr ""
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr ""
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr ""
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr ""
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr ""
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr ""
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr ""
 
@@ -5363,7 +5394,7 @@ msgstr ""
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr ""
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr "일련번호"
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr ""
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr ""
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr ""
 
@@ -5704,228 +5735,228 @@ msgstr ""
 msgid "Confirm removal of installed stock items"
 msgstr ""
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:474
+#: stock/models.py:489
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr ""
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr ""
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr ""
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr ""
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr ""
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr ""
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr ""
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr ""
 msgid "Print labels"
 msgstr ""
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr ""
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr ""
 
@@ -6448,7 +6507,7 @@ msgstr ""
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr ""
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr "선택한 이메일 주소를 정말로 제거하시겠습니까?"
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr "테마 설정"
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr "테마 선택"
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr ""
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr ""
@@ -7607,7 +7666,7 @@ msgstr ""
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr ""
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr ""
 
@@ -7913,137 +7972,141 @@ msgstr ""
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr "선택"
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr ""
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr ""
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr ""
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr "아니오"
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr ""
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr ""
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr "단가"
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr ""
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr ""
 
@@ -8628,237 +8691,245 @@ msgstr ""
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr ""
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr ""
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr ""
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr ""
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr ""
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr ""
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr ""
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr ""
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr ""
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr "이미지 복사"
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr ""
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr ""
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr ""
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr ""
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr "부품 명세서 복사"
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr ""
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr ""
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr ""
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr ""
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr ""
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr ""
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr ""
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr ""
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr ""
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr ""
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr ""
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr ""
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr ""
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr "일련번호 찾기"
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr "일련번호를 입력하세요"
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr "일련번호를 입력하세요"
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr "일치하는 일련번호가 없습니다"
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr ""
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr ""
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr ""
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr ""
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr ""
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr ""
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr ""
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr ""
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr ""
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr ""
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr ""
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr ""
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr ""
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po
index 9d36d788b0..8d2f30b3c8 100644
--- a/InvenTree/locale/nl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/nl/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Dutch\n"
 "Language: nl_NL\n"
@@ -122,7 +122,7 @@ msgstr "Ontbrekend bestand"
 msgid "Missing external link"
 msgstr "Externe link ontbreekt"
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr "Bijlage"
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr "Bestand als bijlage selecteren"
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr "Link"
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr "Link naar externe URL"
 
@@ -152,11 +152,11 @@ msgstr "Opmerking"
 msgid "File comment"
 msgstr "Bijlage opmerking"
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr "Gebruiker"
 
@@ -193,17 +193,17 @@ msgstr "Fout bij hernoemen bestand"
 msgid "Invalid choice"
 msgstr "Ongeldige keuze"
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr "Naam"
 
@@ -212,7 +212,7 @@ msgstr "Naam"
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr "Naam"
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr "Omschrijving"
 
@@ -240,7 +240,7 @@ msgstr "Omschrijving (optioneel)"
 msgid "parent"
 msgstr "overkoepelend"
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr "Moet een geldig nummer zijn"
 
@@ -501,7 +501,7 @@ msgstr "Splits van bovenliggend item"
 msgid "Split child item"
 msgstr "Splits onderliggende item"
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr ""
 
@@ -648,7 +648,7 @@ msgstr "Ongeldige keuze voor bovenliggende build"
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr "Productie-opdracht"
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr "Productie-opdracht referentie"
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr "Referentie"
@@ -692,10 +692,10 @@ msgstr "Productie-opdracht waar dit product aan is toegewezen"
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr "Productie-opdracht waar dit product aan is toegewezen"
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr "Onderdeel"
 
@@ -733,8 +733,8 @@ msgstr "Verkooporder referentie"
 msgid "SalesOrder to which this build is allocated"
 msgstr "Verkooporder waar dit product aan is toegewezen"
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr "Bron Locatie"
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr "Bouwstatuscode"
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr ""
 
@@ -783,7 +783,7 @@ msgstr ""
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr "Aanmaakdatum"
@@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
 #: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr "Opleveringsdatum"
 
@@ -805,7 +805,7 @@ msgstr "Opleveringsdatum"
 msgid "completed by"
 msgstr "voltooid door"
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr ""
 
@@ -816,9 +816,9 @@ msgstr "Gebruiker die de productie-opdracht heeft gegeven"
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr "Verantwoordelijke"
 
@@ -829,7 +829,7 @@ msgstr "Gebruiker verantwoordelijk voor deze productie-opdracht"
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr "Externe Link"
@@ -839,17 +839,17 @@ msgstr "Externe Link"
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr "Opmerkingen"
 
@@ -869,69 +869,69 @@ msgstr "Bouwuitvoer is al voltooid"
 msgid "Build output does not match Build Order"
 msgstr "Product komt niet overeen met de productie-opdracht"
 
-#: build/models.py:1162
+#: build/models.py:1168
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1199
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1256
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr "Product"
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr "Bouw om onderdelen toe te wijzen"
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr "Voorraadartikel"
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr "Bron voorraadartikel"
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr "Bron voorraadartikel"
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr "Aantal"
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr "Voorraad hoeveelheid te alloceren aan bouw"
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr "Installeren in"
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr "Bestemming voorraadartikel"
 
@@ -998,7 +999,7 @@ msgstr "Voer hoeveelheid in voor build-output"
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr "Serienummers"
 
@@ -1042,12 +1043,12 @@ msgstr ""
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr "Locatie"
 
@@ -1058,10 +1059,10 @@ msgstr ""
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr "Status"
 
@@ -1097,8 +1098,8 @@ msgstr ""
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr ""
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr "Voorraad is niet volledig toegewezen aan deze productie-opdracht"
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr "Streefdatum"
 
@@ -1250,7 +1259,7 @@ msgstr "Achterstallig"
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr "Voltooid"
@@ -1262,7 +1271,7 @@ msgstr "Voltooid"
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr "Verkooporder"
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr "Uitgegeven door"
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr "Onvolledige bouwuitvoer"
 
@@ -1311,7 +1321,7 @@ msgstr "Toegewezen onderdelen"
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr "Batch"
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr "Gecreëerd"
 
@@ -1340,7 +1350,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr "Voorraad toewijzen aan Product"
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr "Niet toegewezen voorraad"
 
@@ -1431,8 +1441,8 @@ msgstr ""
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr "Bijlagen"
@@ -1441,27 +1451,27 @@ msgstr "Bijlagen"
 msgid "Build Notes"
 msgstr "Bouw notities"
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr "Notities Bewerken"
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr ""
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr ""
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr ""
 
@@ -1485,12 +1495,8 @@ msgstr ""
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr ""
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
+msgid "Completed Outputs"
 msgstr ""
 
 #: build/views.py:73
@@ -1538,760 +1544,768 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr "Kies {name} bestand om te uploaden"
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr "Waarde van de instelling"
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr "Gekozen waarde is geen geldige optie"
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr "Waarde moet een booleaanse waarde zijn"
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr "Waarde moet een geheel getal zijn"
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr "Sleutelreeks moet uniek zijn"
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr ""
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:631
+#: common/models.py:635
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr "Inventree Instantie Naam"
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr "String-beschrijving voor de server instantie"
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr "Gebruik de instantie naam"
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr "Gebruik de naam van de instantie in de titelbalk"
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr "Bedrijfsnaam"
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr "Interne bedrijfsnaam"
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr "Basis URL"
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr "Basis URL voor serverinstantie"
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr "Standaard valuta"
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr "Standaard valuta"
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr "Download van URL"
 
-#: common/models.py:672
+#: common/models.py:676
 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:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Barcode ondersteuning"
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr "Barcodescanner ondersteuning inschakelen"
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr "IPN Regex"
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr "Reguliere expressiepatroon voor het corresponderen van deel IPN"
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr "Dubbele IPN toestaan"
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Toestaan dat meerdere onderdelen dezelfde IPN gebruiken"
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr "Bewerken IPN toestaan"
 
-#: common/models.py:698
+#: common/models.py:702
 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:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:712
+#: common/models.py:716
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:719
+#: common/models.py:723
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr ""
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr "Samenstelling"
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr "Onderdelen kunnen standaard vanuit andere delen worden samengesteld"
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr ""
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr "Interne prijzen"
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Foutopsporingsmodus"
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr "Paginagrootte"
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr "Testrapport"
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr "Verlopen voorraad"
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr "Verlopen voorraad functionaliteit inschakelen"
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr "Verkoop verlopen voorraad"
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr "Verkoop verlopen voorraad toestaan"
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:904
+#: common/models.py:908
 msgid "days"
 msgstr "dagen"
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig"
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1193
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1200
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2463,7 +2477,7 @@ msgstr ""
 msgid "Link to external company information"
 msgstr ""
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr ""
 
@@ -2500,7 +2514,7 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr ""
@@ -2515,12 +2529,12 @@ msgstr ""
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr "Fabrikant"
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr "Fabrikant selecteren"
 
@@ -2528,11 +2542,11 @@ msgstr "Fabrikant selecteren"
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr "MPN"
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr "Fabrikant artikel nummer (MPN)"
 
@@ -2557,8 +2571,8 @@ msgstr ""
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr ""
 
@@ -2566,10 +2580,10 @@ msgstr ""
 msgid "Parameter value"
 msgstr ""
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr ""
 
@@ -2588,22 +2602,22 @@ msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderd
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr ""
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr ""
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr ""
 
@@ -2644,7 +2658,7 @@ msgstr ""
 msgid "Part packaging"
 msgstr ""
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr ""
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr ""
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr ""
@@ -2739,7 +2753,7 @@ msgstr ""
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr ""
 
@@ -2747,8 +2761,8 @@ msgstr ""
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr ""
 
@@ -2776,7 +2790,7 @@ msgstr "Fabrikant onderdelen"
 msgid "Create new manufacturer part"
 msgstr "Maak nieuw fabrikant onderdeel"
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr "Nieuw fabrikant onderdeel"
 
@@ -2790,7 +2804,7 @@ msgstr ""
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr ""
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr ""
 
@@ -2840,13 +2854,13 @@ msgstr ""
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr ""
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
@@ -2863,7 +2877,7 @@ msgstr "Fabrikanten"
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr ""
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr ""
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr ""
 
@@ -2979,7 +2993,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr ""
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr ""
 
@@ -3030,10 +3044,10 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr ""
 
@@ -3056,7 +3070,7 @@ msgstr ""
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr ""
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr ""
 
@@ -3328,8 +3342,8 @@ msgstr ""
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr ""
 
@@ -3339,7 +3353,7 @@ msgstr ""
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr ""
@@ -3348,9 +3362,9 @@ msgstr ""
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr ""
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr ""
 
@@ -3679,9 +3693,9 @@ msgstr ""
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr ""
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr ""
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr ""
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr "Standaard locatie"
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr ""
 
@@ -3992,448 +4022,448 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr "Standaard locatie voor onderdelen in deze categorie"
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr ""
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr ""
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr ""
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr ""
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr ""
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr ""
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr ""
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr ""
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr ""
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr ""
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr ""
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr ""
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2741
+#: part/models.py:2749
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:2747
+#: part/models.py:2755
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
 msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
+msgid "This category contains %(n)s child categories"
 msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
 msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
 msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
 msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
 msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr ""
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr ""
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr ""
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr ""
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr "Toewijzingen verkoopopdracht"
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr ""
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr ""
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr ""
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr ""
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr ""
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr "Nieuw stuklijstitem"
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr "Samenstellingen"
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr "Productie-opdracht toewijzingen"
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr ""
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr "Fabrikanten"
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr "Fabrikant onderdeel verwijderen"
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr ""
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr ""
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr ""
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr ""
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr ""
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr ""
 
@@ -5363,7 +5394,7 @@ msgstr ""
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr ""
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr "Serienummer"
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr ""
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr ""
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr ""
 
@@ -5704,228 +5735,228 @@ msgstr ""
 msgid "Confirm removal of installed stock items"
 msgstr ""
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:474
+#: stock/models.py:489
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr "Voorraadlocatie"
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr ""
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr ""
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr ""
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr ""
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr ""
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr "Geen Locatie ingesteld"
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr "Afdrukacties"
 msgid "Print labels"
 msgstr "Labels afdrukken"
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr ""
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr ""
 
@@ -6448,7 +6507,7 @@ msgstr ""
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr "Maak nieuwe voorraadlocatie"
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr ""
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr "Beschikbaar"
@@ -7607,7 +7666,7 @@ msgstr ""
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr ""
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr ""
 
@@ -7913,137 +7972,141 @@ msgstr "Locatie is niet opgegeven"
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr "Voorraadtoewijzing bewerken"
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr "Voorraadtoewijzing verwijderen"
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr "Toegewezen"
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr "Voorraad toewijzen"
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr "Onderdelen selecteren"
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 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:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 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:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr "Bevestig de voorraadtoewijzing"
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr "Geen fabricage onderdelen gevonden"
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr ""
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr "Samengesteld onderdeel"
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr ""
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr ""
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr ""
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr ""
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr ""
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr ""
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr ""
 
@@ -8628,237 +8691,245 @@ msgstr ""
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr ""
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr ""
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr ""
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr ""
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr ""
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr ""
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr ""
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr ""
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr ""
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr ""
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr ""
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr ""
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr ""
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr ""
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr ""
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr ""
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr ""
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr ""
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr ""
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr ""
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr ""
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr ""
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr ""
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr ""
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr ""
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr ""
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr ""
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr ""
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr ""
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr ""
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr ""
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr ""
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr ""
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr ""
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr ""
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr ""
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr ""
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr ""
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr "Geen voorraadlocatie ingesteld"
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr ""
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr ""
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po
index c9baec3131..c12c999852 100644
--- a/InvenTree/locale/no/LC_MESSAGES/django.po
+++ b/InvenTree/locale/no/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Norwegian\n"
 "Language: no_NO\n"
@@ -122,7 +122,7 @@ msgstr "Fil mangler"
 msgid "Missing external link"
 msgstr "Mangler eksternlenke"
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr "Vedlegg"
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr "Velg fil å legge ved"
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr "Lenke"
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr "Lenke til ekstern URL"
 
@@ -152,11 +152,11 @@ msgstr "Kommenter"
 msgid "File comment"
 msgstr "Kommentar til fil"
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr "Bruker"
 
@@ -193,17 +193,17 @@ msgstr "Feil ved endring av navn"
 msgid "Invalid choice"
 msgstr "Ugyldig valg"
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr "Navn"
 
@@ -212,7 +212,7 @@ msgstr "Navn"
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr "Navn"
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr "Beskrivelse"
 
@@ -240,7 +240,7 @@ msgstr "Beskrivelse (valgfritt)"
 msgid "parent"
 msgstr "overkategori"
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr "Nummer må være gyldig"
 
@@ -501,7 +501,7 @@ msgstr "Delt fra overordnet element"
 msgid "Split child item"
 msgstr "Delt fra underelement"
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr "Sammenslått lagervare"
 
@@ -648,7 +648,7 @@ msgstr "Ugylding valg for overordnet build"
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr "Build ordre"
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr "Bygg ordrereferanse"
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr "Referanse"
@@ -692,10 +692,10 @@ msgstr "Build order som denne build er tildelt til"
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr "Build order som denne build er tildelt til"
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr "Del"
 
@@ -733,8 +733,8 @@ msgstr "Salg order referanse"
 msgid "SalesOrder to which this build is allocated"
 msgstr "Salgorder som denne build er tildelt til"
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr "Kilde plassering"
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr "Byggstatuskode"
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr "Batch kode"
 
@@ -783,7 +783,7 @@ msgstr "Batch kode"
 msgid "Batch code for this build output"
 msgstr "Batch kode for denne build output"
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr "Opprettelsesdato"
@@ -797,7 +797,7 @@ 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:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr "Fullført dato"
 
@@ -805,7 +805,7 @@ msgstr "Fullført dato"
 msgid "completed by"
 msgstr "fullført av"
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr "Utstedt av"
 
@@ -816,9 +816,9 @@ msgstr "Brukeren som utstede denne prosjekt order"
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr "Ansvarlig"
 
@@ -829,7 +829,7 @@ msgstr "Bruker ansvarlig for denne prosjekt order"
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr "Ekstern link"
@@ -839,17 +839,17 @@ msgstr "Ekstern link"
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr "Notater"
 
@@ -869,69 +869,69 @@ msgstr "Prosjekt utdata er allerede utfylt"
 msgid "Build output does not match Build Order"
 msgstr "Prosjekt utdata samsvarer ikke Prosjekt Order"
 
-#: build/models.py:1162
+#: build/models.py:1168
 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:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr "Tildelt antall ({q}) kan ikke overstige tilgjengelige lager mengde ({a})"
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr "Lagervare er overtildelt"
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 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:1199
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Mengden må væew 1 for serialisert lagervare"
 
-#: build/models.py:1250
+#: build/models.py:1256
 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:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr "Prosjekt"
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr "Bygge for å tildele deler"
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr "Lagervare"
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr "Kilde lagervare"
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr "Kilde lagervare"
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr "Antall"
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr "Installerings informasjon"
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr "Målets lagervare"
 
@@ -998,7 +999,7 @@ msgstr "Angi antall for build utgang"
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr "Mengden må være større enn null"
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr "Serienummer"
 
@@ -1042,12 +1043,12 @@ msgstr ""
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr "Beliggenhet"
 
@@ -1058,10 +1059,10 @@ msgstr ""
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr "Status"
 
@@ -1097,8 +1098,8 @@ msgstr ""
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr "BOM varer"
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr ""
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr "Måldato"
 
@@ -1250,7 +1259,7 @@ msgstr ""
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr "Fullført"
@@ -1262,7 +1271,7 @@ msgstr "Fullført"
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr "Salgsorder"
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr "Utstedt av"
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr ""
 
@@ -1311,7 +1321,7 @@ msgstr "Tildelte deler"
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr ""
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr "Opprettet"
 
@@ -1340,7 +1350,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr "Fjern lager allokering"
 
@@ -1431,8 +1441,8 @@ msgstr ""
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr "Vedlegg"
@@ -1441,27 +1451,27 @@ msgstr "Vedlegg"
 msgid "Build Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr "Rediger notater"
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr "Tildeling fullført"
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr "Alle usporbar lagervarer har tildelt"
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr ""
 
@@ -1485,13 +1495,9 @@ msgstr "Vis liste"
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr "Ventende elementer"
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
-msgstr "Fullført elementer"
+msgid "Completed Outputs"
+msgstr ""
 
 #: build/views.py:73
 msgid "Build was cancelled"
@@ -1538,760 +1544,768 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr "Velg {name} fil som skal lastes opp"
 
-#: common/models.py:352
+#: common/models.py:356
 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:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr "Valgt verdi er ikke et gyldig alternativ"
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr "Verdien må være en boolsk verdi"
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr "Ingen gruppe"
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr "Omstart påkrevd"
 
-#: common/models.py:631
+#: common/models.py:635
 msgid "A setting has been changed which requires a server restart"
 msgstr "En innstilling har blitt endrett som krever en serveromstart"
 
-#: common/models.py:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr ""
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr "Firmanavn"
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr "Internt firmanavn"
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr "Standardvaluta"
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr "Standardvaluta"
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr "Last ned fra URL"
 
-#: common/models.py:672
+#: common/models.py:676
 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:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Strekkode støtte"
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr "Aktiver skrekkodeleser støtte"
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr "Tilat duplisert IPN"
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr "Tillat flere deler å dele samme IPN"
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr "Tillat redigering av IPN"
 
-#: common/models.py:698
+#: common/models.py:702
 msgid "Allow changing the IPN value while editing a part"
 msgstr "Tillat å endre IPN-verdien mens du redigerer en del"
 
-#: common/models.py:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:712
+#: common/models.py:716
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:719
+#: common/models.py:723
 msgid "Copy test data by default when duplicating a part"
 msgstr "Kopier testdata som standard ved duplisering av en del"
 
-#: common/models.py:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr "Kopier kategori parametermaler ved oppretting av en del"
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr "Mal"
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr "Deler er maler som standard"
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr "Montering"
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr "Deler kan settes sammen fra andre komponenter som standard"
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr "Komponent"
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr "Deler kan bli brukt som underkomponenter som standard"
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr "Kjøpbar"
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr "Deler er kjøpbare som standard"
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr "Salgbar"
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr "Deler er salgbare som standard"
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr "Sporbar"
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr "Deler er sporbare som standard"
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr "Virtuelle"
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr "Deler er virtuelle som standard"
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr "Vis import i visninger"
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr "Vis importveiviseren i noen deler visninger"
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr "Vis pris i skjemaer"
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr "Vis delpris i noen skjemaer"
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr ""
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:904
+#: common/models.py:908
 msgid "days"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr "Salgsorder referanse prefiks"
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr "Prefiks verdi for salgsorder referanse"
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr "Salgsorder referanse prefiks"
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr "Prefiks verdi for salgsorder referanse"
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr "Aktiver passord glemt"
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr "Ativer funskjon for glemt passord på innloggingssidene"
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr "Aktiver registrering"
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr "Aktiver egenregistrerting for brukerer på påloggingssidene"
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr "Aktiver SSO"
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr "Aktiver SSO på innloggingssidene"
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr "E-postadresse kreves"
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr "Krevt at brukeren angi e-post ved registrering"
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr "Auto-utfyll SSO brukere"
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr "Fyll automatisk ut brukeropplysninger fra SSO kontodata"
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr "E-post to ganger"
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr "Ved registrering spør brukere to ganger for e-posten"
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr "Passord to ganger"
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr "Ved registrerting, spør brukere to ganger for passord"
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr "Gruppe for hvilke nye brukere som er tilknyttet registrering"
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr "Brukere må bruke flerfaktorsikkerhet."
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr "Aktiver URL integrering"
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr "Aktiver navigasjonsintegrering"
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr "Aktiver app integrasjon"
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr "Vis abbonerte deler"
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr "Vis abbonerte deler på hjemmesiden"
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr "Vis abbonerte kategorier"
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr "Vis abbonerte delkatekorier på hjemmesiden"
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr "Vis nyeste deler"
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr "Vis nyeste deler på hjemmesiden"
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr "Antall nylig deler"
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr "Vis uvaliderte BOMs"
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr "Vis BOMs som venter validering på hjemmesiden"
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr "Vis nylige lagerendringer"
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr "Vis nylig endret lagervarer på hjemmesiden"
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr "Siste lagertelling"
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr "Antall nylige lagervarer som skal vises på indeksside"
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr "Vis lav lager"
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr "Vis lav lagervarer på hjemmesiden"
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr "Vis tom lagervarer"
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1193
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1200
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr "Aktiv"
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr "Sjetong"
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr "Nøkkel for tilgang"
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr "Hemmelig"
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr "Delt hemmlighet for HMAC"
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr "Melding ID"
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr "Unik Id for denne meldingen"
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr "Vert"
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr "Tittel"
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr "Overskrift for denne meldingen"
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr "Brødtekst"
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr "Arbeidet med"
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr "Var arbeidet med denne meldingen ferdig?"
 
@@ -2463,7 +2477,7 @@ msgstr ""
 msgid "Link to external company information"
 msgstr "Link til ekstern bedriftsinformasjon"
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr "Bilde"
 
@@ -2500,7 +2514,7 @@ msgstr "Valuta"
 msgid "Default currency used for this company"
 msgstr "Standardvaluta brukt for dette firmaet"
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr ""
@@ -2515,12 +2529,12 @@ msgstr ""
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr ""
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr ""
 
@@ -2528,11 +2542,11 @@ msgstr ""
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr ""
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr ""
 
@@ -2557,8 +2571,8 @@ msgstr ""
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr ""
 
@@ -2566,10 +2580,10 @@ msgstr ""
 msgid "Parameter value"
 msgstr ""
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr ""
 
@@ -2588,22 +2602,22 @@ msgstr ""
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr ""
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr ""
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr ""
 
@@ -2644,7 +2658,7 @@ msgstr ""
 msgid "Part packaging"
 msgstr ""
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr ""
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr "Last ned bilde fra URL"
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr "Kunde"
@@ -2739,7 +2753,7 @@ msgstr "Oprett ny leverandørdel"
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr "Ny leverandørdel"
 
@@ -2747,8 +2761,8 @@ msgstr "Ny leverandørdel"
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr "Valgmuligheter"
 
@@ -2776,7 +2790,7 @@ msgstr "Produsentdeler"
 msgid "Create new manufacturer part"
 msgstr "Opprett ny produsentdeler"
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr "Ny produsentdel"
 
@@ -2790,7 +2804,7 @@ msgstr "Leverandør lager"
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr "Ny bestillingsorder"
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr "Ny salgsorder"
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr "Tildelt lagervare"
 
@@ -2840,13 +2854,13 @@ msgstr "Notater til firma"
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr "Slett leverandørdeler?"
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr "Alle valgte leverandørdeler vil slettes"
 
@@ -2863,7 +2877,7 @@ msgstr "Produsenter"
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr "Bestill del"
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr "Leverandører"
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr "Slett leverandørdeler"
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr "Slett"
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr ""
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr "Tildelt lagervarer"
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr ""
 
@@ -2979,7 +2993,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr ""
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr ""
 
@@ -3030,10 +3044,10 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr ""
 
@@ -3056,7 +3070,7 @@ msgstr ""
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr ""
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr ""
 
@@ -3328,8 +3342,8 @@ msgstr ""
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr ""
 
@@ -3339,7 +3353,7 @@ msgstr ""
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr ""
@@ -3348,9 +3362,9 @@ msgstr ""
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr ""
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr ""
 
@@ -3679,9 +3693,9 @@ msgstr ""
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr ""
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr ""
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr ""
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr ""
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr ""
 
@@ -3992,448 +4022,448 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr ""
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr ""
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr ""
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr ""
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr ""
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr ""
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr ""
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr ""
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr ""
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr ""
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr ""
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr ""
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2741
+#: part/models.py:2749
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:2747
+#: part/models.py:2755
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
 msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
+msgid "This category contains %(n)s child categories"
 msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
 msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
 msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
 msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
 msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr ""
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr ""
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr ""
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr ""
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr ""
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr ""
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr ""
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr ""
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr ""
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr ""
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr ""
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr ""
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr ""
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr ""
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr ""
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr ""
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr ""
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr ""
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr ""
 
@@ -5363,7 +5394,7 @@ msgstr ""
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr ""
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr ""
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr ""
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr ""
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr ""
 
@@ -5704,228 +5735,228 @@ msgstr ""
 msgid "Confirm removal of installed stock items"
 msgstr ""
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:474
+#: stock/models.py:489
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr ""
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr ""
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr ""
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr ""
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr ""
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr ""
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr ""
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr ""
 msgid "Print labels"
 msgstr ""
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr ""
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr ""
 
@@ -6448,7 +6507,7 @@ msgstr ""
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr ""
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr ""
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr ""
@@ -7607,7 +7666,7 @@ msgstr ""
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr ""
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr ""
 
@@ -7913,137 +7972,141 @@ msgstr ""
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr ""
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr ""
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr ""
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr ""
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr ""
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr ""
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr ""
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr ""
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr ""
 
@@ -8628,237 +8691,245 @@ msgstr ""
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr ""
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr ""
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr ""
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr ""
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr ""
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr ""
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr ""
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr ""
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr ""
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr ""
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr ""
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr ""
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr ""
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr ""
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr ""
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr ""
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr ""
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr ""
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr ""
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr ""
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr ""
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr ""
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr ""
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr ""
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr ""
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr ""
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr ""
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr ""
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr ""
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr ""
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr ""
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr ""
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr ""
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr ""
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr ""
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr ""
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr ""
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr ""
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr ""
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr ""
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr ""
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po
index beb1d8626c..bb6ac81749 100644
--- a/InvenTree/locale/pl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pl/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Polish\n"
 "Language: pl_PL\n"
@@ -122,7 +122,7 @@ msgstr "Brak pliku"
 msgid "Missing external link"
 msgstr "Brak zewnętrznego odnośnika"
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr "Załącznik"
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr "Wybierz plik do załączenia"
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr "Łącze"
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr "Link do zewnętrznego adresu URL"
 
@@ -152,11 +152,11 @@ msgstr "Komentarz"
 msgid "File comment"
 msgstr "Komentarz pliku"
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr "Użytkownik"
 
@@ -193,17 +193,17 @@ msgstr "Błąd zmiany nazwy pliku"
 msgid "Invalid choice"
 msgstr "Błędny wybór"
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr "Nazwa"
 
@@ -212,7 +212,7 @@ msgstr "Nazwa"
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr "Nazwa"
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr "Opis"
 
@@ -240,7 +240,7 @@ msgstr "Opis (opcjonalny)"
 msgid "parent"
 msgstr "nadrzędny"
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr "Numer musi być prawidłowy"
 
@@ -501,7 +501,7 @@ msgstr ""
 msgid "Split child item"
 msgstr "Podziel element podrzędny"
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr ""
 
@@ -648,7 +648,7 @@ msgstr ""
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr "Zlecenie Budowy"
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr "Odwołanie do zamówienia wykonania"
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr "Referencja"
@@ -692,10 +692,10 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana"
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana"
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr "Część"
 
@@ -733,8 +733,8 @@ msgstr "Odwołanie do zamówienia sprzedaży"
 msgid "SalesOrder to which this build is allocated"
 msgstr "Zamówienie sprzedaży, do którego budowa jest przypisana"
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr "Lokalizacja źródła"
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr "Kod statusu budowania"
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr "Kod partii"
 
@@ -783,7 +783,7 @@ msgstr "Kod partii"
 msgid "Batch code for this build output"
 msgstr "Kod partii dla wyjścia budowy"
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr "Data utworzenia"
@@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
 #: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr "Data zakończenia"
 
@@ -805,7 +805,7 @@ msgstr "Data zakończenia"
 msgid "completed by"
 msgstr "zrealizowane przez"
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr "Wydany przez"
 
@@ -816,9 +816,9 @@ msgstr "Użytkownik, który wydał to zamówienie"
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr "Odpowiedzialny"
 
@@ -829,7 +829,7 @@ msgstr "Użytkownik odpowiedzialny za to zamówienie budowy"
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr "Link Zewnętrzny"
@@ -839,17 +839,17 @@ msgstr "Link Zewnętrzny"
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr "Uwagi"
 
@@ -869,69 +869,69 @@ msgstr "Budowanie wyjścia jest już ukończone"
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1168
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 msgid "Allocation quantity must be greater than zero"
 msgstr "Alokowana ilość musi być większa niż zero"
 
-#: build/models.py:1193
+#: build/models.py:1199
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1256
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr "Budowa"
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr "Element magazynowy"
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr "Lokalizacja magazynowania przedmiotu"
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr "Lokalizacja magazynowania przedmiotu"
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr "Ilość"
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr "Zainstaluj do"
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr "Docelowa lokalizacja magazynowa przedmiotu"
 
@@ -998,7 +999,7 @@ msgstr ""
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr "Ilość musi być większa niż zero"
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr "Numer seryjny"
 
@@ -1042,12 +1043,12 @@ msgstr ""
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr "Lokalizacja"
 
@@ -1058,10 +1059,10 @@ msgstr ""
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr "Status"
 
@@ -1097,8 +1098,8 @@ msgstr ""
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr ""
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr ""
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr "Data docelowa"
 
@@ -1250,7 +1259,7 @@ msgstr "Zaległe"
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr "Zakończone"
@@ -1262,7 +1271,7 @@ msgstr "Zakończone"
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr "Zamówienie zakupu"
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr "Dodane przez"
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr ""
 
@@ -1311,7 +1321,7 @@ msgstr ""
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr "Partia"
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr "Utworzony"
 
@@ -1340,7 +1350,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr "Przydziel zapasy do budowy"
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr "Cofnij przydział zapasów"
 
@@ -1431,8 +1441,8 @@ msgstr ""
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr "Załączniki"
@@ -1441,27 +1451,27 @@ msgstr "Załączniki"
 msgid "Build Notes"
 msgstr "Notatki tworzenia"
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr ""
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr ""
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr "Nowe zlecenie budowy"
 
@@ -1485,12 +1495,8 @@ msgstr "Pokaż widok listy"
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr ""
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
+msgid "Completed Outputs"
 msgstr ""
 
 #: build/views.py:73
@@ -1538,760 +1544,768 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr "Ustawienia wartości"
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr ""
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:631
+#: common/models.py:635
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr "Nazwa instancji InvenTree"
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr "Nazwa firmy"
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr "Bazowy URL"
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr "Bazowy adres URL dla instancji serwera"
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr "Pobierz z adresu URL"
 
-#: common/models.py:672
+#: common/models.py:676
 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:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Obsługa kodu kreskowego"
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr "Włącz obsługę skanera kodów"
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr "Wyrażenie regularne IPN"
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr "Zezwól na powtarzający się IPN"
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr "Zezwól na edycję IPN"
 
-#: common/models.py:698
+#: common/models.py:702
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr "Skopiuj BOM komponentu"
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:712
+#: common/models.py:716
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:719
+#: common/models.py:723
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr "Szablon"
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr "Złożenie"
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr "Komponent"
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr "Możliwość zakupu"
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr "Części są domyślnie z możliwością zakupu"
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr "Możliwość sprzedaży"
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr "Części są domyślnie z możliwością sprzedaży"
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr "Możliwość śledzenia"
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr "Części są domyślnie z możliwością śledzenia"
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr "Wirtualny"
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr "Części są domyślnie wirtualne"
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Tryb Debugowania"
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr "Rozmiar strony"
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr "Raporty testów"
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr "Włącz generowanie raportów testów"
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:904
+#: common/models.py:908
 msgid "days"
 msgstr "dni"
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1193
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1200
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr "Pokaż ilość w formularzach"
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr "Cena"
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr "Aktywny"
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2463,7 +2477,7 @@ msgstr "Punkt kontaktowy"
 msgid "Link to external company information"
 msgstr "Link do informacji o zewnętrznym przedsiębiorstwie"
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr "Obraz"
 
@@ -2500,7 +2514,7 @@ msgstr "Waluta"
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr "Część bazowa"
@@ -2515,12 +2529,12 @@ msgstr "Wybierz część"
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr "Producent"
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr "Wybierz producenta"
 
@@ -2528,11 +2542,11 @@ msgstr "Wybierz producenta"
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr "MPN"
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr "Numer producenta"
 
@@ -2557,8 +2571,8 @@ msgstr ""
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr ""
 
@@ -2566,10 +2580,10 @@ msgstr ""
 msgid "Parameter value"
 msgstr ""
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr "Jednostki"
 
@@ -2588,22 +2602,22 @@ msgstr ""
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr "Dostawca"
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr "Wybierz dostawcę"
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr "SKU"
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr "Uwaga"
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr "koszt podstawowy"
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr "Opakowanie"
 
@@ -2644,7 +2658,7 @@ msgstr "Opakowanie"
 msgid "Part packaging"
 msgstr "Opakowanie części"
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr "wielokrotność"
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr ""
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr "Klient"
@@ -2739,7 +2753,7 @@ msgstr "Utwórz nowego dostawcę części"
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr "Nowy dostawca części"
 
@@ -2747,8 +2761,8 @@ msgstr "Nowy dostawca części"
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr "Opcje"
 
@@ -2776,7 +2790,7 @@ msgstr "Części producenta"
 msgid "Create new manufacturer part"
 msgstr "Utwórz nową część producenta"
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr "Nowa część producenta"
 
@@ -2790,7 +2804,7 @@ msgstr "Zapasy dostawcy"
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr ""
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr ""
 
@@ -2840,13 +2854,13 @@ msgstr ""
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr ""
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
@@ -2863,7 +2877,7 @@ msgstr "Producenci"
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr "Zamów część"
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr "Dostawcy"
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr "Usuń"
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr "Parametry"
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr "Dodaj parametr"
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr ""
 
@@ -2979,7 +2993,7 @@ msgstr "Utwórz nowy towar"
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr "Nowy towar"
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr ""
 
@@ -3030,10 +3044,10 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr "Stan"
 
@@ -3056,7 +3070,7 @@ msgstr "Cennik"
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr "Towary"
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr "Zamówienie"
 
@@ -3328,8 +3342,8 @@ msgstr "Zamówienie"
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr "Zlecenie zakupu"
 
@@ -3339,7 +3353,7 @@ msgstr ""
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr "Odebrane"
@@ -3348,9 +3362,9 @@ msgstr "Odebrane"
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr "Cena zakupu"
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr "Status zamówienia"
 
@@ -3679,9 +3693,9 @@ msgstr "Wybierz dostawcę części"
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr ""
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr "Akcje"
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr ""
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr "Domyślna lokalizacja"
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr "Dostępna ilość"
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr ""
 
@@ -3992,448 +4022,448 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr "Domyślne słowa kluczowe"
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr "Części"
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr ""
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr ""
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr "Nazwa części"
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr "Wariant"
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr "Opis części"
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr "Słowa kluczowe"
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr "Kategoria"
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr "IPN"
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr "Wersja"
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr "Minimalny stan magazynowy"
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr "Czy ta część może być zbudowana z innych części?"
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr "Czy ta część może być użyta do budowy innych części?"
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr "Czy ta część jest aktywna?"
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr "Sprzedaj wiele"
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr "Nazwa testu"
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr "Wymagane"
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr "Część nadrzędna"
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr "Dane"
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr "Wartość domyślna"
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr ""
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr "Wybierz część nadrzędną"
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr "Podczęść"
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr "Suma kontrolna"
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2741
+#: part/models.py:2749
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:2747
+#: part/models.py:2755
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr "Część 1"
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr "Część 2"
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr "Wybierz powiązaną część"
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
-msgstr "Czy na pewno chcesz usunąć tę kategorię?"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
+msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
+msgid "This category contains %(n)s child categories"
 msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
 msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
-msgstr "kategoria"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
+msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
 msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
 msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr ""
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr "Duplikuj część"
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr "Zapasy części"
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr ""
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr "Warianty Części"
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr "Utwórz nowy wariant"
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr "Nowy wariant"
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr "Dodaj powiązane"
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr "Zestawienie materiałowe"
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr "Kopiuj BOM"
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr ""
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr ""
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr ""
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr ""
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr "Powiązane części"
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr "Dodaj powiązaną część"
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr ""
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr "Część jest wirtualna (nie fizyczna)"
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr "Nieaktywny"
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr ""
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr ""
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr "Brak w magazynie"
 
@@ -5363,7 +5394,7 @@ msgstr ""
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr "Edytuj kategorię części"
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr "Numer Seryjny"
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr "Wynik"
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr "Data"
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr ""
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr "Data ważności"
 
@@ -5704,228 +5735,228 @@ msgstr ""
 msgid "Confirm removal of installed stock items"
 msgstr ""
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:474
+#: stock/models.py:489
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr "Nadrzędny towar"
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr "Część podstawowa"
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr "Wybierz pasującą część dostawcy dla tego towaru"
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr ""
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr "Ilość w magazynie"
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr "Ilość musi być liczbą całkowitą"
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr "Ilość nie może przekraczać dostępnej ilości towaru ({n})"
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr ""
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr ""
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr "Ostatnia aktualizacja"
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr ""
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr "Lokacje nie są ustawione"
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr ""
 msgid "Print labels"
 msgstr "Drukuj etykiety"
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr "Czy na pewno chcesz skasować tą lokację?"
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr ""
 
@@ -6448,7 +6507,7 @@ msgstr ""
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr "Utwórz nową lokalizację magazynową"
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr ""
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr "Dostępne"
@@ -7607,7 +7666,7 @@ msgstr ""
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr ""
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr ""
 
@@ -7913,137 +7972,141 @@ msgstr ""
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr "Ilość za"
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr "Przydzielono"
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr "Potwierdź przydział zapasów"
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr ""
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr ""
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr ""
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr ""
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr ""
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr ""
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr "Cena jednostkowa"
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr ""
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr ""
 
@@ -8628,237 +8691,245 @@ msgstr "Zaktualizuj cenę jednostkową"
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr ""
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr ""
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr ""
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr ""
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr ""
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr ""
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr ""
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr ""
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr ""
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr ""
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr ""
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr ""
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr ""
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr ""
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr ""
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr ""
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr ""
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr ""
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr ""
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr ""
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr ""
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr ""
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr ""
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr ""
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr "Cena jednostkowa"
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr ""
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr ""
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr ""
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr ""
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr ""
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr ""
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr ""
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr ""
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr ""
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr ""
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr ""
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr "Dodaj stan"
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr "Dodaj"
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr ""
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr ""
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr ""
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr ""
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr "Szczegóły"
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr "Dodano"
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/pt/LC_MESSAGES/django.po b/InvenTree/locale/pt/LC_MESSAGES/django.po
index 10b487d252..2d4f3a534c 100644
--- a/InvenTree/locale/pt/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pt/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Portuguese\n"
 "Language: pt_PT\n"
@@ -122,7 +122,7 @@ msgstr ""
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr ""
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr ""
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr ""
 
@@ -152,11 +152,11 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr ""
 
@@ -193,17 +193,17 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr ""
 
@@ -212,7 +212,7 @@ msgstr ""
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr ""
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr ""
 
@@ -240,7 +240,7 @@ msgstr ""
 msgid "parent"
 msgstr ""
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr ""
 
@@ -501,7 +501,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr ""
 
@@ -648,7 +648,7 @@ msgstr ""
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr ""
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr ""
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr ""
@@ -692,10 +692,10 @@ msgstr ""
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr ""
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr ""
 
@@ -733,8 +733,8 @@ msgstr ""
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr ""
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr ""
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr ""
 
@@ -783,7 +783,7 @@ msgstr ""
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr ""
@@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
 #: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr ""
 
@@ -805,7 +805,7 @@ msgstr ""
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr ""
 
@@ -816,9 +816,9 @@ msgstr ""
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr ""
 
@@ -829,7 +829,7 @@ msgstr ""
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr ""
@@ -839,17 +839,17 @@ msgstr ""
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr ""
 
@@ -869,69 +869,69 @@ msgstr ""
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1168
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1199
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1256
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr ""
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr ""
 
@@ -998,7 +999,7 @@ msgstr ""
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr ""
 
@@ -1042,12 +1043,12 @@ msgstr ""
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr ""
 
@@ -1058,10 +1059,10 @@ msgstr ""
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr ""
 
@@ -1097,8 +1098,8 @@ msgstr ""
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr ""
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr ""
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr ""
 
@@ -1250,7 +1259,7 @@ msgstr ""
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr ""
@@ -1262,7 +1271,7 @@ msgstr ""
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr ""
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr ""
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr ""
 
@@ -1311,7 +1321,7 @@ msgstr ""
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr ""
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr ""
 
@@ -1340,7 +1350,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1431,8 +1441,8 @@ msgstr ""
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr ""
@@ -1441,27 +1451,27 @@ msgstr ""
 msgid "Build Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr ""
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr ""
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr ""
 
@@ -1485,12 +1495,8 @@ msgstr ""
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr ""
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
+msgid "Completed Outputs"
 msgstr ""
 
 #: build/views.py:73
@@ -1538,760 +1544,768 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr ""
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:631
+#: common/models.py:635
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr ""
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:672
+#: common/models.py:676
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr ""
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:698
+#: common/models.py:702
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:712
+#: common/models.py:716
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:719
+#: common/models.py:723
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr ""
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr ""
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr ""
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:904
+#: common/models.py:908
 msgid "days"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1193
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1200
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2463,7 +2477,7 @@ msgstr ""
 msgid "Link to external company information"
 msgstr ""
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr ""
 
@@ -2500,7 +2514,7 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr ""
@@ -2515,12 +2529,12 @@ msgstr ""
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr ""
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr ""
 
@@ -2528,11 +2542,11 @@ msgstr ""
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr ""
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr ""
 
@@ -2557,8 +2571,8 @@ msgstr ""
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr ""
 
@@ -2566,10 +2580,10 @@ msgstr ""
 msgid "Parameter value"
 msgstr ""
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr ""
 
@@ -2588,22 +2602,22 @@ msgstr ""
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr ""
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr ""
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr ""
 
@@ -2644,7 +2658,7 @@ msgstr ""
 msgid "Part packaging"
 msgstr ""
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr ""
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr ""
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr ""
@@ -2739,7 +2753,7 @@ msgstr ""
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr ""
 
@@ -2747,8 +2761,8 @@ msgstr ""
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr ""
 
@@ -2776,7 +2790,7 @@ msgstr ""
 msgid "Create new manufacturer part"
 msgstr ""
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr ""
 
@@ -2790,7 +2804,7 @@ msgstr ""
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr ""
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr ""
 
@@ -2840,13 +2854,13 @@ msgstr ""
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr ""
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
@@ -2863,7 +2877,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr ""
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr ""
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr ""
 
@@ -2979,7 +2993,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr ""
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr ""
 
@@ -3030,10 +3044,10 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr ""
 
@@ -3056,7 +3070,7 @@ msgstr ""
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr ""
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr ""
 
@@ -3328,8 +3342,8 @@ msgstr ""
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr ""
 
@@ -3339,7 +3353,7 @@ msgstr ""
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr ""
@@ -3348,9 +3362,9 @@ msgstr ""
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr ""
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr ""
 
@@ -3679,9 +3693,9 @@ msgstr ""
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr ""
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr ""
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr ""
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr ""
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr ""
 
@@ -3992,448 +4022,448 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr ""
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr ""
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr ""
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr ""
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr ""
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr ""
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr ""
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr ""
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr ""
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr ""
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr ""
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr ""
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2741
+#: part/models.py:2749
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:2747
+#: part/models.py:2755
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
 msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
+msgid "This category contains %(n)s child categories"
 msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
 msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
 msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
 msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
 msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr ""
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr ""
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr ""
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr ""
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr ""
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr ""
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr ""
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr ""
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr ""
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr ""
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr ""
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr ""
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr ""
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr ""
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr ""
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr ""
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr ""
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr ""
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr ""
 
@@ -5363,7 +5394,7 @@ msgstr ""
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr ""
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr ""
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr ""
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr ""
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr ""
 
@@ -5704,228 +5735,228 @@ msgstr ""
 msgid "Confirm removal of installed stock items"
 msgstr ""
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:474
+#: stock/models.py:489
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr ""
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr ""
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr ""
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr ""
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr ""
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr ""
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr ""
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr ""
 msgid "Print labels"
 msgstr ""
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr ""
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr ""
 
@@ -6448,7 +6507,7 @@ msgstr ""
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr ""
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr ""
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr ""
@@ -7607,7 +7666,7 @@ msgstr ""
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr ""
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr ""
 
@@ -7913,137 +7972,141 @@ msgstr ""
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr ""
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr ""
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr ""
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr ""
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr ""
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr ""
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr ""
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr ""
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr ""
 
@@ -8628,237 +8691,245 @@ msgstr ""
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr ""
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr ""
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr ""
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr ""
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr ""
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr ""
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr ""
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr ""
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr ""
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr ""
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr ""
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr ""
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr ""
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr ""
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr ""
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr ""
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr ""
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr ""
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr ""
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr ""
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr ""
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr ""
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr ""
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr ""
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr ""
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr ""
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr ""
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr ""
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr ""
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr ""
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr ""
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr ""
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr ""
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr ""
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr ""
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr ""
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr ""
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr ""
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr ""
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr ""
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr ""
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po
index 66adf93267..7671a15a86 100644
--- a/InvenTree/locale/ru/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ru/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Russian\n"
 "Language: ru_RU\n"
@@ -122,7 +122,7 @@ msgstr "Файл не найден"
 msgid "Missing external link"
 msgstr "Отсутствует внешняя ссылка"
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr "Вложения"
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr "Выберите файл для вложения"
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr "Ссылка"
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr "Ссылка на внешний URL"
 
@@ -152,11 +152,11 @@ msgstr "Комментарий"
 msgid "File comment"
 msgstr "Комментарий к файлу"
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr "Пользователь"
 
@@ -193,17 +193,17 @@ msgstr "Ошибка переименования файла"
 msgid "Invalid choice"
 msgstr "Неверный выбор"
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr "Название"
 
@@ -212,7 +212,7 @@ msgstr "Название"
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr "Название"
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr "Описание"
 
@@ -240,7 +240,7 @@ msgstr "Описание (необязательно)"
 msgid "parent"
 msgstr "родитель"
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr "Должно быть действительным номером"
 
@@ -501,7 +501,7 @@ msgstr "Отделить от родительского элемента"
 msgid "Split child item"
 msgstr "Разбить дочерний элемент"
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr "Объединенные позиции на складе"
 
@@ -648,7 +648,7 @@ msgstr "Неверный выбор для родительской сборки
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr "Порядок сборки"
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr "Ссылка на заказ"
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr "Отсылка"
@@ -692,10 +692,10 @@ msgstr ""
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr ""
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr "Детали"
 
@@ -733,8 +733,8 @@ msgstr "Отсылка на заказ"
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr "Расположение источника"
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr "Код статуса сборки"
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr "Штрих код"
 
@@ -783,7 +783,7 @@ msgstr "Штрих код"
 msgid "Batch code for this build output"
 msgstr "Штрих код для этого вывода сборки"
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr "Дата создания"
@@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Целевая дата для сборки. Сборка будет просрочена после этой даты."
 
 #: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr "Дата завершения"
 
@@ -805,7 +805,7 @@ msgstr "Дата завершения"
 msgid "completed by"
 msgstr "выполнено"
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr "Выдал/ла"
 
@@ -816,9 +816,9 @@ msgstr "Пользователь, выпустивший этот заказ н
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr "Ответственный"
 
@@ -829,7 +829,7 @@ msgstr "Пользователь ответственный за этот зак
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr "Внешняя ссылка"
@@ -839,17 +839,17 @@ msgstr "Внешняя ссылка"
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr "Заметки"
 
@@ -869,69 +869,69 @@ msgstr "Вывод сборки уже завершен"
 msgid "Build output does not match Build Order"
 msgstr "Вывод сборки не совпадает с порядком сборки"
 
-#: build/models.py:1162
+#: build/models.py:1168
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr "Элемент сборки должен указать вывод сборки, так как основная часть помечена как отслеживаемая"
 
-#: build/models.py:1171
+#: build/models.py:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr "Выделенное количество ({q}) не должно превышать доступное количество на складе ({a})"
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr "Предмет на складе перераспределен"
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 msgid "Allocation quantity must be greater than zero"
 msgstr "Выделенное количество должно быть больше нуля"
 
-#: build/models.py:1193
+#: build/models.py:1199
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Количество должно быть 1 для сериализованных запасов"
 
-#: build/models.py:1250
+#: build/models.py:1256
 msgid "Selected stock item not found in BOM"
 msgstr "Выбранный предмет со складом не найден в BOM"
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr "Сборка"
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr "Предметы на складе"
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr "Исходный складской предмет"
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr "Исходный складской предмет"
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr "Количество"
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr ""
 
@@ -998,7 +999,7 @@ msgstr "Введите количество для вывода сборки"
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr "Количество должно быть больше нуля"
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr "Серийные номера"
 
@@ -1042,12 +1043,12 @@ msgstr ""
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr "Расположение"
 
@@ -1058,10 +1059,10 @@ msgstr ""
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr "Статус"
 
@@ -1097,8 +1098,8 @@ msgstr ""
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr "BOM Компонент"
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr ""
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr "Целевая дата"
 
@@ -1250,7 +1259,7 @@ msgstr "Просрочено"
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr "Завершённые"
@@ -1262,7 +1271,7 @@ msgstr "Завершённые"
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr "Заказ покупателя"
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr "Выдано"
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr "Незавершенные выходные данные"
 
@@ -1311,7 +1321,7 @@ msgstr ""
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr "Партия"
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr "Создано"
 
@@ -1340,7 +1350,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1431,8 +1441,8 @@ msgstr ""
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr "Приложения"
@@ -1441,27 +1451,27 @@ msgstr "Приложения"
 msgid "Build Notes"
 msgstr "Заметки сборки"
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr ""
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr ""
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr ""
 
@@ -1485,12 +1495,8 @@ msgstr ""
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr ""
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
+msgid "Completed Outputs"
 msgstr ""
 
 #: build/views.py:73
@@ -1538,760 +1544,768 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr ""
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:631
+#: common/models.py:635
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr ""
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:672
+#: common/models.py:676
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr ""
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:698
+#: common/models.py:702
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:712
+#: common/models.py:716
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:719
+#: common/models.py:723
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr ""
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr ""
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr ""
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:904
+#: common/models.py:908
 msgid "days"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1193
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1200
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2463,7 +2477,7 @@ msgstr ""
 msgid "Link to external company information"
 msgstr ""
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr ""
 
@@ -2500,7 +2514,7 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr ""
@@ -2515,12 +2529,12 @@ msgstr ""
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr ""
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr ""
 
@@ -2528,11 +2542,11 @@ msgstr ""
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr ""
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr ""
 
@@ -2557,8 +2571,8 @@ msgstr ""
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr ""
 
@@ -2566,10 +2580,10 @@ msgstr ""
 msgid "Parameter value"
 msgstr ""
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr ""
 
@@ -2588,22 +2602,22 @@ msgstr ""
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr ""
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr ""
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr ""
 
@@ -2644,7 +2658,7 @@ msgstr ""
 msgid "Part packaging"
 msgstr ""
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr ""
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr ""
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr ""
@@ -2739,7 +2753,7 @@ msgstr ""
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr ""
 
@@ -2747,8 +2761,8 @@ msgstr ""
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr ""
 
@@ -2776,7 +2790,7 @@ msgstr ""
 msgid "Create new manufacturer part"
 msgstr ""
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr ""
 
@@ -2790,7 +2804,7 @@ msgstr ""
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr ""
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr ""
 
@@ -2840,13 +2854,13 @@ msgstr ""
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr ""
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
@@ -2863,7 +2877,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr ""
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr ""
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr ""
 
@@ -2979,7 +2993,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr ""
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr ""
 
@@ -3030,10 +3044,10 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr ""
 
@@ -3056,7 +3070,7 @@ msgstr ""
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr ""
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr ""
 
@@ -3328,8 +3342,8 @@ msgstr ""
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr ""
 
@@ -3339,7 +3353,7 @@ msgstr ""
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr ""
@@ -3348,9 +3362,9 @@ msgstr ""
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr ""
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr ""
 
@@ -3679,9 +3693,9 @@ msgstr ""
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr ""
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr ""
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr ""
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr ""
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr ""
 
@@ -3992,448 +4022,448 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr ""
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr ""
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr ""
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr ""
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr ""
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr ""
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr ""
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr ""
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr ""
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr ""
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr ""
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr ""
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2741
+#: part/models.py:2749
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:2747
+#: part/models.py:2755
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
 msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
+msgid "This category contains %(n)s child categories"
 msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
 msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
 msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
 msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
 msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr ""
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr ""
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr ""
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr ""
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr ""
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr ""
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr ""
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr ""
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr ""
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr ""
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr ""
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr ""
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr ""
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr ""
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr ""
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr ""
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr ""
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr ""
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr ""
 
@@ -5363,7 +5394,7 @@ msgstr ""
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr ""
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr ""
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr ""
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr ""
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr ""
 
@@ -5704,228 +5735,228 @@ msgstr ""
 msgid "Confirm removal of installed stock items"
 msgstr ""
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:474
+#: stock/models.py:489
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr ""
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr ""
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr ""
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr ""
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr ""
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr ""
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr ""
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr ""
 msgid "Print labels"
 msgstr ""
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr ""
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr ""
 
@@ -6448,7 +6507,7 @@ msgstr ""
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr ""
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr ""
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr ""
@@ -7607,7 +7666,7 @@ msgstr ""
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr ""
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr ""
 
@@ -7913,137 +7972,141 @@ msgstr ""
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr "Подтвердите выделение запасов"
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr ""
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr ""
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr ""
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr ""
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr ""
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr ""
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr ""
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr ""
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr ""
 
@@ -8628,237 +8691,245 @@ msgstr ""
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr ""
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr ""
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr ""
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr ""
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr ""
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr ""
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr ""
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr ""
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr ""
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr ""
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr ""
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr ""
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr ""
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr ""
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr ""
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr ""
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr ""
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr ""
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr ""
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr ""
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr ""
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr ""
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr ""
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr ""
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr ""
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr ""
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr ""
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr ""
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr ""
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr ""
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr ""
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr ""
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr ""
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr ""
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr ""
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr ""
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr ""
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr ""
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr ""
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr ""
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr ""
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po
index 8c4acc7c80..60cc3452aa 100644
--- a/InvenTree/locale/sv/LC_MESSAGES/django.po
+++ b/InvenTree/locale/sv/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Swedish\n"
 "Language: sv_SE\n"
@@ -122,7 +122,7 @@ msgstr ""
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr "Bilaga"
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr "Välj fil att bifoga"
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr ""
 
@@ -152,11 +152,11 @@ msgstr "Kommentar"
 msgid "File comment"
 msgstr "Fil kommentar"
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr "Användare"
 
@@ -193,17 +193,17 @@ msgstr "Fel vid namnbyte av fil"
 msgid "Invalid choice"
 msgstr "Ogiltigt val"
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr "Namn"
 
@@ -212,7 +212,7 @@ msgstr "Namn"
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr "Namn"
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr "Beskrivning"
 
@@ -240,7 +240,7 @@ msgstr "Beskrivning (valfritt)"
 msgid "parent"
 msgstr "överordnad"
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr "Måste vara ett giltigt nummer"
 
@@ -501,7 +501,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr ""
 
@@ -648,7 +648,7 @@ msgstr ""
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr ""
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr ""
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr ""
@@ -692,10 +692,10 @@ msgstr ""
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr ""
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr ""
 
@@ -733,8 +733,8 @@ msgstr ""
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr ""
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr ""
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr ""
 
@@ -783,7 +783,7 @@ msgstr ""
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr ""
@@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
 #: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr ""
 
@@ -805,7 +805,7 @@ msgstr ""
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr ""
 
@@ -816,9 +816,9 @@ msgstr ""
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr ""
 
@@ -829,7 +829,7 @@ msgstr ""
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr ""
@@ -839,17 +839,17 @@ msgstr ""
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr ""
 
@@ -869,69 +869,69 @@ msgstr ""
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1168
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1199
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1256
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr ""
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr ""
 
@@ -998,7 +999,7 @@ msgstr ""
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr ""
 
@@ -1042,12 +1043,12 @@ msgstr ""
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr ""
 
@@ -1058,10 +1059,10 @@ msgstr ""
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr ""
 
@@ -1097,8 +1098,8 @@ msgstr ""
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr ""
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr ""
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr ""
 
@@ -1250,7 +1259,7 @@ msgstr ""
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr ""
@@ -1262,7 +1271,7 @@ msgstr ""
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr ""
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr ""
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr ""
 
@@ -1311,7 +1321,7 @@ msgstr ""
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr ""
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr ""
 
@@ -1340,7 +1350,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1431,8 +1441,8 @@ msgstr ""
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr ""
@@ -1441,27 +1451,27 @@ msgstr ""
 msgid "Build Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr ""
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr ""
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr ""
 
@@ -1485,12 +1495,8 @@ msgstr ""
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr ""
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
+msgid "Completed Outputs"
 msgstr ""
 
 #: build/views.py:73
@@ -1538,760 +1544,768 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr ""
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:631
+#: common/models.py:635
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr ""
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:672
+#: common/models.py:676
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr ""
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:698
+#: common/models.py:702
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:712
+#: common/models.py:716
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:719
+#: common/models.py:723
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr ""
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr ""
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr ""
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:904
+#: common/models.py:908
 msgid "days"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1193
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1200
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2463,7 +2477,7 @@ msgstr ""
 msgid "Link to external company information"
 msgstr ""
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr ""
 
@@ -2500,7 +2514,7 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr ""
@@ -2515,12 +2529,12 @@ msgstr ""
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr ""
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr ""
 
@@ -2528,11 +2542,11 @@ msgstr ""
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr ""
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr ""
 
@@ -2557,8 +2571,8 @@ msgstr ""
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr ""
 
@@ -2566,10 +2580,10 @@ msgstr ""
 msgid "Parameter value"
 msgstr ""
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr ""
 
@@ -2588,22 +2602,22 @@ msgstr ""
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr ""
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr ""
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr ""
 
@@ -2644,7 +2658,7 @@ msgstr ""
 msgid "Part packaging"
 msgstr ""
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr ""
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr ""
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr ""
@@ -2739,7 +2753,7 @@ msgstr ""
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr ""
 
@@ -2747,8 +2761,8 @@ msgstr ""
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr ""
 
@@ -2776,7 +2790,7 @@ msgstr ""
 msgid "Create new manufacturer part"
 msgstr ""
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr ""
 
@@ -2790,7 +2804,7 @@ msgstr ""
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr ""
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr ""
 
@@ -2840,13 +2854,13 @@ msgstr ""
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr ""
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
@@ -2863,7 +2877,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr ""
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr ""
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr ""
 
@@ -2979,7 +2993,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr ""
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr ""
 
@@ -3030,10 +3044,10 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr ""
 
@@ -3056,7 +3070,7 @@ msgstr ""
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr ""
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr ""
 
@@ -3328,8 +3342,8 @@ msgstr ""
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr ""
 
@@ -3339,7 +3353,7 @@ msgstr ""
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr ""
@@ -3348,9 +3362,9 @@ msgstr ""
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr ""
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr ""
 
@@ -3679,9 +3693,9 @@ msgstr ""
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr ""
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr ""
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr ""
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr ""
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr ""
 
@@ -3992,448 +4022,448 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr ""
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr ""
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr ""
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr ""
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr ""
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr ""
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr ""
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr ""
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr ""
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr ""
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr ""
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr ""
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2741
+#: part/models.py:2749
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:2747
+#: part/models.py:2755
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
 msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
+msgid "This category contains %(n)s child categories"
 msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
 msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
 msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
 msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
 msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr ""
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr ""
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr ""
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr ""
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr ""
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr ""
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr ""
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr ""
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr ""
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr ""
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr ""
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr ""
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr ""
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr ""
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr ""
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr ""
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr ""
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr ""
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr ""
 
@@ -5363,7 +5394,7 @@ msgstr ""
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr ""
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr ""
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr ""
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr ""
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr ""
 
@@ -5704,228 +5735,228 @@ msgstr ""
 msgid "Confirm removal of installed stock items"
 msgstr ""
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:474
+#: stock/models.py:489
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr ""
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr ""
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr ""
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr ""
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr ""
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr ""
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr ""
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr ""
 msgid "Print labels"
 msgstr ""
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr ""
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr ""
 
@@ -6448,7 +6507,7 @@ msgstr ""
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr ""
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr ""
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr ""
@@ -7607,7 +7666,7 @@ msgstr ""
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr ""
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr ""
 
@@ -7913,137 +7972,141 @@ msgstr ""
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr ""
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr ""
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr ""
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr ""
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr ""
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr ""
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr ""
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr ""
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr ""
 
@@ -8628,237 +8691,245 @@ msgstr ""
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr ""
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr ""
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr ""
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr ""
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr ""
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr ""
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr ""
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr ""
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr ""
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr ""
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr ""
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr ""
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr ""
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr ""
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr ""
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr ""
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr ""
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr ""
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr ""
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr ""
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr ""
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr ""
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr ""
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr ""
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr ""
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr ""
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr ""
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr ""
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr ""
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr ""
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr ""
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr ""
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr ""
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr ""
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr ""
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr ""
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr ""
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr ""
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr ""
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr ""
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr ""
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po
index d7b247832d..eb632f412c 100644
--- a/InvenTree/locale/th/LC_MESSAGES/django.po
+++ b/InvenTree/locale/th/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Thai\n"
 "Language: th_TH\n"
@@ -122,7 +122,7 @@ msgstr ""
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr ""
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr ""
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr ""
 
@@ -152,11 +152,11 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr ""
 
@@ -193,17 +193,17 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr ""
 
@@ -212,7 +212,7 @@ msgstr ""
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr ""
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr ""
 
@@ -240,7 +240,7 @@ msgstr ""
 msgid "parent"
 msgstr ""
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr ""
 
@@ -501,7 +501,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr ""
 
@@ -648,7 +648,7 @@ msgstr ""
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr ""
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr ""
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr ""
@@ -692,10 +692,10 @@ msgstr ""
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr ""
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr ""
 
@@ -733,8 +733,8 @@ msgstr ""
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr ""
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr ""
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr ""
 
@@ -783,7 +783,7 @@ msgstr ""
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr ""
@@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
 #: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr ""
 
@@ -805,7 +805,7 @@ msgstr ""
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr ""
 
@@ -816,9 +816,9 @@ msgstr ""
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr ""
 
@@ -829,7 +829,7 @@ msgstr ""
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr ""
@@ -839,17 +839,17 @@ msgstr ""
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr ""
 
@@ -869,69 +869,69 @@ msgstr ""
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1168
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1199
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1256
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr ""
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr ""
 
@@ -998,7 +999,7 @@ msgstr ""
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr ""
 
@@ -1042,12 +1043,12 @@ msgstr ""
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr ""
 
@@ -1058,10 +1059,10 @@ msgstr ""
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr ""
 
@@ -1097,8 +1098,8 @@ msgstr ""
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr ""
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr ""
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr ""
 
@@ -1250,7 +1259,7 @@ msgstr ""
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr ""
@@ -1262,7 +1271,7 @@ msgstr ""
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr ""
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr ""
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr ""
 
@@ -1311,7 +1321,7 @@ msgstr ""
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr ""
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr ""
 
@@ -1340,7 +1350,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1431,8 +1441,8 @@ msgstr ""
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr ""
@@ -1441,27 +1451,27 @@ msgstr ""
 msgid "Build Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr ""
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr ""
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr ""
 
@@ -1485,12 +1495,8 @@ msgstr ""
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr ""
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
+msgid "Completed Outputs"
 msgstr ""
 
 #: build/views.py:73
@@ -1538,760 +1544,768 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr ""
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:631
+#: common/models.py:635
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr ""
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:672
+#: common/models.py:676
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr ""
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:698
+#: common/models.py:702
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:712
+#: common/models.py:716
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:719
+#: common/models.py:723
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr ""
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr ""
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr ""
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:904
+#: common/models.py:908
 msgid "days"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1193
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1200
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2463,7 +2477,7 @@ msgstr ""
 msgid "Link to external company information"
 msgstr ""
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr ""
 
@@ -2500,7 +2514,7 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr ""
@@ -2515,12 +2529,12 @@ msgstr ""
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr ""
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr ""
 
@@ -2528,11 +2542,11 @@ msgstr ""
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr ""
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr ""
 
@@ -2557,8 +2571,8 @@ msgstr ""
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr ""
 
@@ -2566,10 +2580,10 @@ msgstr ""
 msgid "Parameter value"
 msgstr ""
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr ""
 
@@ -2588,22 +2602,22 @@ msgstr ""
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr ""
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr ""
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr ""
 
@@ -2644,7 +2658,7 @@ msgstr ""
 msgid "Part packaging"
 msgstr ""
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr ""
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr ""
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr ""
@@ -2739,7 +2753,7 @@ msgstr ""
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr ""
 
@@ -2747,8 +2761,8 @@ msgstr ""
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr ""
 
@@ -2776,7 +2790,7 @@ msgstr ""
 msgid "Create new manufacturer part"
 msgstr ""
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr ""
 
@@ -2790,7 +2804,7 @@ msgstr ""
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr ""
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr ""
 
@@ -2840,13 +2854,13 @@ msgstr ""
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr ""
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
@@ -2863,7 +2877,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr ""
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr ""
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr ""
 
@@ -2979,7 +2993,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr ""
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr ""
 
@@ -3030,10 +3044,10 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr ""
 
@@ -3056,7 +3070,7 @@ msgstr ""
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr ""
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr ""
 
@@ -3328,8 +3342,8 @@ msgstr ""
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr ""
 
@@ -3339,7 +3353,7 @@ msgstr ""
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr ""
@@ -3348,9 +3362,9 @@ msgstr ""
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr ""
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr ""
 
@@ -3679,9 +3693,9 @@ msgstr ""
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr ""
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr ""
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr ""
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr ""
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr ""
 
@@ -3992,448 +4022,448 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr ""
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr ""
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr ""
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr ""
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr ""
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr ""
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr ""
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr ""
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr ""
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr ""
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr ""
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr ""
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2741
+#: part/models.py:2749
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:2747
+#: part/models.py:2755
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
 msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
+msgid "This category contains %(n)s child categories"
 msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
 msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
 msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
 msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
 msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr ""
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr ""
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr ""
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr ""
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr ""
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr ""
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr ""
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr ""
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr ""
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr ""
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr ""
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr ""
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr ""
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr ""
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr ""
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr ""
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr ""
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr ""
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr ""
 
@@ -5363,7 +5394,7 @@ msgstr ""
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr ""
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr ""
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr ""
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr ""
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr ""
 
@@ -5704,228 +5735,228 @@ msgstr ""
 msgid "Confirm removal of installed stock items"
 msgstr ""
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:474
+#: stock/models.py:489
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr ""
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr ""
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr ""
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr ""
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr ""
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr ""
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr ""
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr ""
 msgid "Print labels"
 msgstr ""
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr ""
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr ""
 
@@ -6448,7 +6507,7 @@ msgstr ""
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr ""
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr ""
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr ""
@@ -7607,7 +7666,7 @@ msgstr ""
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr ""
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr ""
 
@@ -7913,137 +7972,141 @@ msgstr ""
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr ""
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr ""
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr ""
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr ""
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr ""
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr ""
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr ""
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr ""
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr ""
 
@@ -8628,237 +8691,245 @@ msgstr ""
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr ""
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr ""
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr ""
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr ""
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr ""
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr ""
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr ""
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr ""
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr ""
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr ""
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr ""
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr ""
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr ""
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr ""
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr ""
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr ""
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr ""
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr ""
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr ""
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr ""
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr ""
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr ""
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr ""
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr ""
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr ""
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr ""
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr ""
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr ""
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr ""
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr ""
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr ""
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr ""
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr ""
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr ""
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr ""
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr ""
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr ""
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr ""
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr ""
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr ""
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr ""
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po
index a6a49e1458..c30f095ce9 100644
--- a/InvenTree/locale/tr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/tr/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Turkish\n"
 "Language: tr_TR\n"
@@ -122,7 +122,7 @@ msgstr ""
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr "Ek"
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr "Eklenecek dosyayı seç"
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr "Bağlantı"
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr "Harici URL'ye bağlantı"
 
@@ -152,11 +152,11 @@ msgstr "Yorum"
 msgid "File comment"
 msgstr "Dosya yorumu"
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr "Kullanıcı"
 
@@ -193,17 +193,17 @@ msgstr ""
 msgid "Invalid choice"
 msgstr "Geçersiz seçim"
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr "Adı"
 
@@ -212,7 +212,7 @@ msgstr "Adı"
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr "Adı"
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr "Açıklama"
 
@@ -240,7 +240,7 @@ msgstr "Açıklama (isteğe bağlı)"
 msgid "parent"
 msgstr "üst"
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr "Geçerli bir numara olmalı"
 
@@ -501,7 +501,7 @@ msgstr "Üst ögeden ayır"
 msgid "Split child item"
 msgstr "Alt ögeyi ayır"
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr ""
 
@@ -648,7 +648,7 @@ msgstr ""
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr "Yapım İşi Emri"
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr "Yapım İşi Emri Referansı"
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr "Referans"
@@ -692,10 +692,10 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri"
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri"
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr "Parça"
 
@@ -733,8 +733,8 @@ msgstr "Satış Emri Referansı"
 msgid "SalesOrder to which this build is allocated"
 msgstr "Bu yapım işinin tahsis edildiği satış emri"
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr "Kaynak Konum"
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr "Yapım işi durum kodu"
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr "Sıra numarası"
 
@@ -783,7 +783,7 @@ msgstr "Sıra numarası"
 msgid "Batch code for this build output"
 msgstr "Yapım işi çıktısı için sıra numarası"
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr "Oluşturulma tarihi"
@@ -797,7 +797,7 @@ 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:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr "Tamamlama tarihi"
 
@@ -805,7 +805,7 @@ msgstr "Tamamlama tarihi"
 msgid "completed by"
 msgstr "tamamlayan"
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr "Veren"
 
@@ -816,9 +816,9 @@ msgstr "Bu yapım işi emrini veren kullanıcı"
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr "Sorumlu"
 
@@ -829,7 +829,7 @@ msgstr "Bu yapım işi emrinden sorumlu kullanıcı"
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr "Harici Bağlantı"
@@ -839,17 +839,17 @@ msgstr "Harici Bağlantı"
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr "Notlar"
 
@@ -869,69 +869,69 @@ msgstr "Yapım işi çıktısı zaten tamamlanmış"
 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:1168
 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:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr "Stok kalemi fazladan tahsis edilmiş"
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 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:1199
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Seri numaralı stok için miktar bir olmalı"
 
-#: build/models.py:1250
+#: build/models.py:1256
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr "Yapım İşi"
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr "Yapım işi için tahsis edilen parçalar"
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr "Stok Kalemi"
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr "Kaynak stok kalemi"
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr "Kaynak stok kalemi"
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr "Miktar"
 
-#: build/models.py:1350
+#: build/models.py:1356
 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:1364
 msgid "Install into"
 msgstr "Kurulduğu yer"
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr "Hedef stok kalemi"
 
@@ -998,7 +999,7 @@ msgstr "Yapım işi çıktısı için miktarını girin"
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr "Seri Numaraları"
 
@@ -1042,12 +1043,12 @@ msgstr ""
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr "Konum"
 
@@ -1058,10 +1059,10 @@ msgstr ""
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr "Durum"
 
@@ -1097,8 +1098,8 @@ msgstr ""
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr ""
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr "Stok, yapım işi emri için tamamen tahsis edilemedi"
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr "Hedeflenen tarih"
 
@@ -1250,7 +1259,7 @@ msgstr "Vadesi geçmiş"
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr "Tamamlandı"
@@ -1262,7 +1271,7 @@ msgstr "Tamamlandı"
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr "Sipariş Emri"
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr "Veren"
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr "Tamamlanmamış Çıktılar"
 
@@ -1311,7 +1321,7 @@ msgstr ""
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr "Toplu"
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr "Oluşturuldu"
 
@@ -1340,7 +1350,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:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr "Stok tahsisini kaldır"
 
@@ -1431,8 +1441,8 @@ msgstr "Tamamlanmış Yapım İşi Çıktıları"
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr "Ekler"
@@ -1441,27 +1451,27 @@ msgstr "Ekler"
 msgid "Build Notes"
 msgstr "Yapım İşi Notları"
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr "Notları Düzenle"
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr ""
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr ""
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr "Yeni Yapım İşi Emri"
 
@@ -1485,12 +1495,8 @@ msgstr "Liste görünümünü görüntüle"
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr ""
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
+msgid "Completed Outputs"
 msgstr ""
 
 #: build/views.py:73
@@ -1538,760 +1544,768 @@ msgstr "{name.title()} Dosya"
 msgid "Select {name} file to upload"
 msgstr "{name} dosyasını yüklemek için seçin"
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr "Anahtar dizesi benzersiz olmalı"
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr ""
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:631
+#: common/models.py:635
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr ""
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr "Şirket adı"
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr "Ana URL"
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr "Varsayılan Para Birimi"
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr "Varsayılan para birimi"
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr "URL'den indir"
 
-#: common/models.py:672
+#: common/models.py:676
 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:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr "Barkod Desteği"
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr "Barkod tarayıcı desteğini etkinleştir"
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr "DPN Regex"
 
-#: common/models.py:686
+#: common/models.py:690
 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:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr "Yinelenen DPN'ye İzin Ver"
 
-#: common/models.py:691
+#: common/models.py:695
 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:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr "DPN Düzenlemeye İzin Ver"
 
-#: common/models.py:698
+#: common/models.py:702
 msgid "Allow changing the IPN value while editing a part"
 msgstr "Parçayı düzenlerken DPN değiştirmeye izin ver"
 
-#: common/models.py:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:712
+#: common/models.py:716
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:719
+#: common/models.py:723
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr "Kategori Paremetre Sablonu Kopyala"
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr "Parça oluştururken kategori parametre şablonlarını kopyala"
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr "Şablon"
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr "Parçaları varsayılan olan şablondur"
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr "Montaj"
 
-#: common/models.py:740
+#: common/models.py:744
 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:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr "Bileşen"
 
-#: common/models.py:747
+#: common/models.py:751
 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:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr "Satın Alınabilir"
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr "Parçalar varsayılan olarak satın alınabilir"
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr "Satılabilir"
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr "Parçalar varsayılan olarak satılabilir"
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr "Takip Edilebilir"
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr "Parçalar varsayılan olarak takip edilebilir"
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr "Sanal"
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr "Parçalar varsayılan olarak sanaldır"
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr "Formlarda Fiyat Göster"
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr "İlgili parçaları göster"
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "Hata Ayıklama Modu"
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "Raporları hata ayıklama modunda üret (HTML çıktısı)"
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr "Sayfa Boyutu"
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr "PDF raporlar için varsayılan sayfa boyutu"
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr "Test Raporları"
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:904
+#: common/models.py:908
 msgid "days"
 msgstr "günler"
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr "Stok konumu ve ögeler üzerinde sahiplik kontrolünü etkinleştirin"
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr ""
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr ""
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1193
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1200
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr "Formlarda Miktarı Göster"
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr "Fiyat"
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr "Aktif"
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2463,7 +2477,7 @@ msgstr ""
 msgid "Link to external company information"
 msgstr ""
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr "Resim"
 
@@ -2500,7 +2514,7 @@ msgstr "Para birimi"
 msgid "Default currency used for this company"
 msgstr "Bu şirket için varsayılan para birimi"
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr "Temel Parça"
@@ -2515,12 +2529,12 @@ msgstr "Parça seçin"
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr "Üretici"
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr "Üretici seçin"
 
@@ -2528,11 +2542,11 @@ msgstr "Üretici seçin"
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr "ÜPN"
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr "Üretici Parça Numarası"
 
@@ -2557,8 +2571,8 @@ msgstr "Parametre adı"
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr "Değer"
 
@@ -2566,10 +2580,10 @@ msgstr "Değer"
 msgid "Parameter value"
 msgstr "Parametre değeri"
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr ""
 
@@ -2588,22 +2602,22 @@ msgstr ""
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr "Tedarikçi"
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr "Tedarikçi seçin"
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr "SKU"
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr "Not"
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr "temel maliyet"
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr "Paketleme"
 
@@ -2644,7 +2658,7 @@ msgstr "Paketleme"
 msgid "Part packaging"
 msgstr ""
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr "çoklu"
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr ""
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr "Müşteri"
@@ -2739,7 +2753,7 @@ msgstr "Yeni tedarikçi parçası oluştur"
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr "Yeni Tedarikçi Parçası"
 
@@ -2747,8 +2761,8 @@ msgstr "Yeni Tedarikçi Parçası"
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr ""
 
@@ -2776,7 +2790,7 @@ msgstr ""
 msgid "Create new manufacturer part"
 msgstr ""
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr ""
 
@@ -2790,7 +2804,7 @@ msgstr "Tedarikçi Stoku"
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr "Yeni Satın Alma Emri"
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr "Yeni Satış Emri"
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr "Atanan Stok"
 
@@ -2840,13 +2854,13 @@ msgstr ""
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr ""
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
@@ -2863,7 +2877,7 @@ msgstr "Üreticiler"
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr "Parça siparişi"
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr "Tedarikçi parçalarını sil"
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr ""
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr "Tedarikçi Parçası"
 
@@ -2979,7 +2993,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr ""
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr "Tedarikçi Parçası Emirleri"
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr ""
 
@@ -3030,10 +3044,10 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr "Stok"
 
@@ -3056,7 +3070,7 @@ msgstr "Fiyatlandırma"
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr "Stok Kalemleri"
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr ""
 
@@ -3328,8 +3342,8 @@ msgstr ""
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr ""
 
@@ -3339,7 +3353,7 @@ msgstr ""
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr ""
@@ -3348,9 +3362,9 @@ msgstr ""
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr ""
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr ""
 
@@ -3679,9 +3693,9 @@ msgstr "Tedarikçi Parçası Seçin"
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr ""
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr "İşlemler"
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr ""
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr "Varsayılan Konum"
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr ""
 
@@ -3992,448 +4022,448 @@ msgstr "Parametre şablonunu tüm kategorilere ekle"
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr "Bu kategori içindeki parçalar için varsayılan konum"
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr "Parça Kategorileri"
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr "Parçalar"
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr "Sonraki kullanılabilir seri numaraları"
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr "Sonraki müsait seri numarası"
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr "En son seri numarası"
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "Yinelenen DPN'ye parça ayarlarında izin verilmiyor"
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr "Parça adı"
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr "Şablon Mu"
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr "Bu parça bir şablon parçası mı?"
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr "Bu parça başka bir parçanın çeşidi mi?"
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr "Çeşidi"
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr "Parça açıklaması"
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr "Anahtar kelimeler"
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr ""
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr "DPN"
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr "Parça revizyon veya versiyon numarası"
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr "Revizyon"
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr "Varsayılan Tedarikçi"
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr "Varsayılan tedarikçi parçası"
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr "Minimum Stok"
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr "Bu parça diğer parçalardan yapılabilir mi?"
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr "Bu parça diğer parçaların yapımında kullanılabilir mi?"
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr "Bu parça dış tedarikçilerden satın alınabilir mi?"
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr "Bu parça müşterilere satılabilir mi?"
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr "Bu parça aktif mi?"
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr "Oluşturan Kullanıcı"
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr "Test şablonları sadece takip edilebilir paçalar için oluşturulabilir"
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr "Test Adı"
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr "Test Açıklaması"
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr "Gerekli"
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr "Testi geçmesi için bu gerekli mi?"
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr "Parametre şablon adı benzersiz olmalıdır"
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr "Parametre Şablonu"
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr ""
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2741
+#: part/models.py:2749
 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:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr "Çeşide İzin Ver"
 
-#: part/models.py:2747
+#: part/models.py:2755
 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:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
-msgstr "Bu kategoriyi silmek istediğinize emin misiniz"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
+msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
-msgstr "Bu kategori %(count)s alt kategori içermektedir"
+msgid "This category contains %(n)s child categories"
+msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
-msgstr "Bu kategori silinirse, alt kategoriler taşınacaktır"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
+msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
-msgstr "kategori"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
+msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
 msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
-msgstr "Bu kategori %(count)s parça içermektedir"
-
-#: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
 msgstr ""
 
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+#: part/templates/part/category_delete.html:27
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr ""
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr "Parça Stoku"
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr "Parça Test Şablonları"
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr "Test Şablonu Ekle"
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr "Parça Çeşitleri"
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr "Yeni çeşit oluştur"
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr "Yeni Çeşit"
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr ""
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr ""
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr ""
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr "Parça Tedarikçileri"
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr ""
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr ""
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr ""
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr ""
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr "Pasif"
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr ""
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr "Aşağıdaki parçalara kategori ayarla"
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr "Stok Yok"
 
@@ -5363,7 +5394,7 @@ msgstr "Parça Parametre Şablonu Düzenle"
 msgid "Delete Part Parameter Template"
 msgstr "Parça Parametre Şablonu Sil"
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr ""
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr "Seri Numara"
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr ""
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr "Seri No"
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr ""
 
@@ -5704,228 +5735,228 @@ msgstr ""
 msgid "Confirm removal of installed stock items"
 msgstr "Kurulu stok kalemlerinin kaldırılmasını onayla"
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr "Bu seri numarasına sahip stok kalemi zaten var"
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr "Seri numarası olan ögenin miktarı bir olmalı"
 
-#: stock/models.py:474
+#: stock/models.py:489
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr "Miktar birden büyük ise seri numarası ayarlanamaz"
 
-#: stock/models.py:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr "Üst Stok Kalemi"
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr "Bu stok kalemi için tedarikçi parçası seçin"
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr "Stok Konumu"
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr "Bu öge için seri numarası"
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr ""
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr "Seri numaraları tam sayı listesi olmalı"
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr "Miktar seri numaları ile eşleşmiyor"
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr "Seri numaraları zaten mevcut: {exists}"
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr "Stok kalemi stokta olmadığı için taşınamaz"
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr ""
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr "Bu stok kalemi seri numaları - Benzersiz bir seri numarasına sahip ve miktarı ayarlanamaz."
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr "Konum ayarlanmadı"
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr "Yazdırma İşlemleri"
 msgid "Print labels"
 msgstr "Etiketleri yazdır"
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr "Bu stok konumunu silmek istediğinizden emin misiniz?"
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr "Stok ayarlamasını onayla"
 
@@ -6448,7 +6507,7 @@ msgstr "Stok ayarlamasını onayla"
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr "Yeni Stok konumu oluştur"
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr "Tema Ayarları"
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr "Tema Seç"
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr "Dil Ayarları"
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr "Dili Ayarla"
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr ""
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr "Mevcut"
@@ -7607,7 +7666,7 @@ msgstr ""
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr ""
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr "Gerekli Parça"
 
@@ -7913,137 +7972,141 @@ msgstr ""
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr "Stok tahsisini düzenle"
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr "Stok tahsisini sil"
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr "Parçaları Seçin"
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr "Stok tahsisini onayla"
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr ""
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr "Şablon Parça"
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr ""
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr ""
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr ""
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr ""
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr ""
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr ""
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr ""
 
@@ -8628,237 +8691,245 @@ msgstr ""
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr ""
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr ""
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr ""
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr ""
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr ""
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr ""
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr ""
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr ""
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr ""
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr ""
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr ""
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr ""
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr ""
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr ""
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr ""
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr ""
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr ""
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr ""
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr "Çeşit bulunamadı"
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr ""
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr ""
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr ""
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr ""
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr ""
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr ""
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr "Sorgu ile eşleşen test şablonu bulunamadı"
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr ""
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr ""
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr ""
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr ""
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr ""
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr ""
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr ""
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr ""
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr ""
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr ""
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr ""
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr ""
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr ""
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr ""
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr "Stok konumu ayarlanmadı"
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr ""
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr "konumlar"
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr "Tanımsız konum"
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr "Detaylar"
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr "Konum artık yok"
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po
index 5144350a90..97353622b3 100644
--- a/InvenTree/locale/vi/LC_MESSAGES/django.po
+++ b/InvenTree/locale/vi/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Vietnamese\n"
 "Language: vi_VN\n"
@@ -122,7 +122,7 @@ msgstr ""
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr ""
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr ""
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr ""
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr ""
 
@@ -152,11 +152,11 @@ msgstr "Bình luận"
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr "Người dùng"
 
@@ -193,17 +193,17 @@ msgstr ""
 msgid "Invalid choice"
 msgstr ""
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr ""
 
@@ -212,7 +212,7 @@ msgstr ""
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr ""
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr "Mô tả"
 
@@ -240,7 +240,7 @@ msgstr "Mô tả (tùy chọn)"
 msgid "parent"
 msgstr ""
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr ""
 
@@ -501,7 +501,7 @@ msgstr ""
 msgid "Split child item"
 msgstr ""
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr ""
 
@@ -648,7 +648,7 @@ msgstr ""
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr "Tạo đơn hàng"
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr ""
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr ""
@@ -692,10 +692,10 @@ msgstr ""
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr ""
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr "Nguyên liệu"
 
@@ -733,8 +733,8 @@ msgstr ""
 msgid "SalesOrder to which this build is allocated"
 msgstr ""
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr ""
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr ""
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr ""
 
@@ -783,7 +783,7 @@ msgstr ""
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr ""
@@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
 #: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr "Ngày hoàn thành"
 
@@ -805,7 +805,7 @@ msgstr "Ngày hoàn thành"
 msgid "completed by"
 msgstr ""
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr ""
 
@@ -816,9 +816,9 @@ msgstr ""
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr ""
 
@@ -829,7 +829,7 @@ msgstr ""
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr ""
@@ -839,17 +839,17 @@ msgstr ""
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr ""
 
@@ -869,69 +869,69 @@ msgstr ""
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:1162
+#: build/models.py:1168
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1193
+#: build/models.py:1199
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1256
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr ""
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr ""
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr ""
 
@@ -998,7 +999,7 @@ msgstr ""
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr ""
 
@@ -1042,12 +1043,12 @@ msgstr ""
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr ""
 
@@ -1058,10 +1059,10 @@ msgstr ""
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr "Trạng thái"
 
@@ -1097,8 +1098,8 @@ msgstr ""
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr ""
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr ""
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr ""
 
@@ -1250,7 +1259,7 @@ msgstr ""
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr "Đã hoàn thành"
@@ -1262,7 +1271,7 @@ msgstr "Đã hoàn thành"
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr ""
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr ""
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr ""
 
@@ -1311,7 +1321,7 @@ msgstr ""
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr ""
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr ""
 
@@ -1340,7 +1350,7 @@ msgstr ""
 msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr ""
 
@@ -1431,8 +1441,8 @@ msgstr ""
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr ""
@@ -1441,27 +1451,27 @@ msgstr ""
 msgid "Build Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr ""
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr ""
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr ""
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr ""
 
@@ -1485,12 +1495,8 @@ msgstr ""
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr ""
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
+msgid "Completed Outputs"
 msgstr ""
 
 #: build/views.py:73
@@ -1538,760 +1544,768 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr ""
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:631
+#: common/models.py:635
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr ""
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr ""
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:672
+#: common/models.py:676
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr ""
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:698
+#: common/models.py:702
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:712
+#: common/models.py:716
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:719
+#: common/models.py:723
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr ""
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr ""
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr ""
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr ""
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr ""
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr ""
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr ""
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr ""
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr ""
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr ""
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr ""
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr ""
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr ""
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:904
+#: common/models.py:908
 msgid "days"
 msgstr ""
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr "Hiển thị nguyên liệu mới nhất"
 
-#: common/models.py:1091
+#: common/models.py:1095
 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:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr ""
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr ""
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr ""
 
-#: common/models.py:1189
+#: common/models.py:1193
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1200
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr ""
 
-#: common/models.py:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr ""
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr ""
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr ""
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2463,7 +2477,7 @@ msgstr ""
 msgid "Link to external company information"
 msgstr ""
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr ""
 
@@ -2500,7 +2514,7 @@ msgstr ""
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr ""
@@ -2515,12 +2529,12 @@ msgstr ""
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr "Nhà sản xuất"
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr ""
 
@@ -2528,11 +2542,11 @@ msgstr ""
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr ""
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr ""
 
@@ -2557,8 +2571,8 @@ msgstr ""
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr ""
 
@@ -2566,10 +2580,10 @@ msgstr ""
 msgid "Parameter value"
 msgstr ""
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr ""
 
@@ -2588,22 +2602,22 @@ msgstr ""
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr "Nhà cung cấp"
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr ""
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr ""
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr ""
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr ""
 
@@ -2644,7 +2658,7 @@ msgstr ""
 msgid "Part packaging"
 msgstr ""
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr ""
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr ""
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr ""
@@ -2739,7 +2753,7 @@ msgstr ""
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr ""
 
@@ -2747,8 +2761,8 @@ msgstr ""
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr ""
 
@@ -2776,7 +2790,7 @@ msgstr ""
 msgid "Create new manufacturer part"
 msgstr ""
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr ""
 
@@ -2790,7 +2804,7 @@ msgstr ""
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr ""
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr ""
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr ""
 
@@ -2840,13 +2854,13 @@ msgstr ""
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr ""
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr ""
 
@@ -2863,7 +2877,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr ""
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr ""
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr ""
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr ""
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr ""
 
@@ -2979,7 +2993,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr ""
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr ""
 
@@ -3030,10 +3044,10 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr "Kiện hàng"
 
@@ -3056,7 +3070,7 @@ msgstr ""
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr ""
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr ""
 
@@ -3328,8 +3342,8 @@ msgstr ""
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr "Đơn hàng"
 
@@ -3339,7 +3353,7 @@ msgstr ""
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr ""
@@ -3348,9 +3362,9 @@ msgstr ""
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr "Giá mua"
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr ""
 
@@ -3679,9 +3693,9 @@ msgstr ""
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr ""
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr ""
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr ""
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr ""
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr ""
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr ""
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr ""
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr ""
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr ""
 
@@ -3992,448 +4022,448 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr "Nguyên liệu"
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr ""
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr ""
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr ""
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr ""
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr ""
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr ""
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr ""
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr ""
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr ""
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr ""
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr ""
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2741
+#: part/models.py:2749
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:2747
+#: part/models.py:2755
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
 msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
+msgid "This category contains %(n)s child categories"
 msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
 msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
 msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
 msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
 msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr ""
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr ""
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr ""
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr ""
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr ""
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr ""
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr ""
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr ""
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr ""
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr ""
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr ""
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr ""
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr ""
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr ""
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr ""
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr ""
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr ""
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr ""
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr ""
 
@@ -5363,7 +5394,7 @@ msgstr ""
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr ""
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr ""
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr ""
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr ""
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr ""
 
@@ -5704,228 +5735,228 @@ msgstr ""
 msgid "Confirm removal of installed stock items"
 msgstr ""
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr ""
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:474
+#: stock/models.py:489
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr "Kho hàng"
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr ""
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr ""
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr ""
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr ""
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr ""
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr ""
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr ""
 msgid "Print labels"
 msgstr ""
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr ""
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr ""
 
@@ -6448,7 +6507,7 @@ msgstr ""
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr ""
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr "Thiết lập giao diện"
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr "Thiết lập ngôn ngữ"
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr ""
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr ""
@@ -7607,7 +7666,7 @@ msgstr ""
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr ""
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr ""
 
@@ -7913,137 +7972,141 @@ msgstr ""
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr ""
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr ""
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr ""
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr ""
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr ""
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr ""
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr ""
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr ""
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr ""
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr ""
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr ""
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr ""
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr ""
 
@@ -8628,237 +8691,245 @@ msgstr ""
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr ""
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr ""
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr ""
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr ""
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr ""
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr ""
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr ""
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr ""
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr ""
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr ""
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr ""
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr ""
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr ""
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr ""
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr ""
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr ""
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr ""
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr ""
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr ""
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr ""
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr ""
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr ""
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr ""
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr ""
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr ""
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr ""
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr ""
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr ""
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr ""
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr ""
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr ""
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr ""
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr ""
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr ""
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr ""
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr ""
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr ""
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr ""
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr ""
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr ""
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr ""
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr ""
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""
 
diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po
index 58c2e559da..0dcd4d02fb 100644
--- a/InvenTree/locale/zh/LC_MESSAGES/django.po
+++ b/InvenTree/locale/zh/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: inventree\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-03-07 04:31+0000\n"
-"PO-Revision-Date: 2022-03-07 04:47\n"
+"POT-Creation-Date: 2022-03-10 05:08+0000\n"
+"PO-Revision-Date: 2022-03-10 05:25\n"
 "Last-Translator: \n"
 "Language-Team: Chinese Simplified\n"
 "Language: zh_CN\n"
@@ -122,7 +122,7 @@ msgstr "缺少文件"
 msgid "Missing external link"
 msgstr ""
 
-#: InvenTree/models.py:197 stock/models.py:2123
+#: InvenTree/models.py:197 stock/models.py:2138
 #: templates/js/translated/attachment.js:119
 msgid "Attachment"
 msgstr "附件"
@@ -132,15 +132,15 @@ msgid "Select file to attach"
 msgstr "选择附件"
 
 #: InvenTree/models.py:204 company/models.py:131 company/models.py:348
-#: company/models.py:564 order/models.py:127 part/models.py:860
+#: company/models.py:564 order/models.py:127 part/models.py:868
 #: report/templates/report/inventree_build_order_base.html:165
 #: templates/js/translated/company.js:540
-#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347
+#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348
 msgid "Link"
 msgstr "链接"
 
-#: InvenTree/models.py:205 build/models.py:332 part/models.py:861
-#: stock/models.py:618
+#: InvenTree/models.py:205 build/models.py:332 part/models.py:869
+#: stock/models.py:633
 msgid "Link to external URL"
 msgstr "链接到外部 URL"
 
@@ -152,11 +152,11 @@ msgstr "注释"
 msgid "File comment"
 msgstr "文件注释"
 
-#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277
-#: common/models.py:1278 common/models.py:1506 common/models.py:1507
-#: part/models.py:2317 part/models.py:2337
+#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288
+#: common/models.py:1289 common/models.py:1517 common/models.py:1518
+#: part/models.py:2325 part/models.py:2345
 #: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2773
+#: templates/js/translated/stock.js:2783
 msgid "User"
 msgstr "用户"
 
@@ -193,17 +193,17 @@ msgstr "重命名文件出错"
 msgid "Invalid choice"
 msgstr "选择无效"
 
-#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492
-#: company/models.py:415 label/models.py:112 part/models.py:804
-#: part/models.py:2501 plugin/models.py:40 report/models.py:181
+#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503
+#: company/models.py:415 label/models.py:112 part/models.py:812
+#: part/models.py:2509 plugin/models.py:40 report/models.py:181
 #: templates/InvenTree/settings/mixins/urls.html:13
 #: templates/InvenTree/settings/plugin.html:48
 #: templates/InvenTree/settings/plugin.html:125
 #: templates/InvenTree/settings/plugin_settings.html:23
 #: templates/InvenTree/settings/settings.html:319
-#: templates/js/translated/company.js:641 templates/js/translated/part.js:568
-#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654
-#: templates/js/translated/stock.js:2573
+#: templates/js/translated/company.js:641 templates/js/translated/part.js:569
+#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:2583
 msgid "Name"
 msgstr "名称"
 
@@ -212,7 +212,7 @@ msgstr "名称"
 #: company/models.py:570 company/templates/company/company_base.html:68
 #: company/templates/company/manufacturer_part.html:76
 #: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74
+#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74
 #: part/templates/part/part_base.html:163
 #: part/templates/part/set_category.html:14 report/models.py:194
 #: report/models.py:553 report/models.py:592
@@ -220,15 +220,15 @@ msgstr "名称"
 #: stock/templates/stock/location.html:92
 #: templates/InvenTree/settings/plugin_settings.html:33
 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763
-#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345
+#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345
 #: templates/js/translated/company.js:551
 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971
 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454
-#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022
-#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277
-#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742
-#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402
-#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623
+#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023
+#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278
+#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743
+#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412
+#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633
 msgid "Description"
 msgstr "描述信息"
 
@@ -240,7 +240,7 @@ msgstr "描述 (可选)"
 msgid "parent"
 msgstr "上级项"
 
-#: InvenTree/serializers.py:65 part/models.py:2820
+#: InvenTree/serializers.py:65 part/models.py:2828
 msgid "Must be a valid number"
 msgstr "必须是有效数字"
 
@@ -501,7 +501,7 @@ msgstr "从父项拆分"
 msgid "Split child item"
 msgstr "拆分子项"
 
-#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160
+#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170
 msgid "Merged stock items"
 msgstr ""
 
@@ -648,7 +648,7 @@ msgstr "上级生产选项无效"
 #: build/models.py:139 build/templates/build/build_base.html:9
 #: build/templates/build/build_base.html:27
 #: report/templates/report/inventree_build_order_base.html:106
-#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378
+#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388
 msgid "Build Order"
 msgstr "生产订单"
 
@@ -667,11 +667,11 @@ msgid "Build Order Reference"
 msgstr "相关生产订单"
 
 #: build/models.py:201 order/models.py:213 order/models.py:563
-#: order/models.py:843 part/models.py:2731
+#: order/models.py:843 part/models.py:2739
 #: part/templates/part/upload_bom.html:54
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402
+#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414
 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349
 msgid "Reference"
 msgstr "引用"
@@ -692,10 +692,10 @@ msgstr "此次生产匹配的订单"
 #: build/models.py:227 build/templates/build/build_base.html:77
 #: build/templates/build/detail.html:30 company/models.py:705
 #: order/models.py:912 order/models.py:986
-#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359
-#: part/models.py:2263 part/models.py:2279 part/models.py:2298
-#: part/models.py:2315 part/models.py:2417 part/models.py:2539
-#: part/models.py:2629 part/models.py:2706 part/models.py:3013
+#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367
+#: part/models.py:2271 part/models.py:2287 part/models.py:2306
+#: part/models.py:2323 part/models.py:2425 part/models.py:2547
+#: part/models.py:2637 part/models.py:2714 part/models.py:3021
 #: part/serializers.py:669 part/templates/part/part_app_base.html:8
 #: part/templates/part/part_pricing.html:12
 #: part/templates/part/set_category.html:13
@@ -708,16 +708,16 @@ msgstr "此次生产匹配的订单"
 #: templates/email/low_stock_notification.html:16
 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551
 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903
-#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666
-#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492
+#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680
+#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492
 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84
 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177
 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138
-#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007
-#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255
-#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683
-#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613
-#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947
+#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008
+#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256
+#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693
+#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623
+#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957
 msgid "Part"
 msgstr "商品"
 
@@ -733,8 +733,8 @@ msgstr "相关销售订单"
 msgid "SalesOrder to which this build is allocated"
 msgstr "此次生产匹配的销售订单"
 
-#: build/models.py:249 build/serializers.py:729
-#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769
+#: build/models.py:249 build/serializers.py:730
+#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769
 msgid "Source Location"
 msgstr "来源地点"
 
@@ -775,7 +775,7 @@ msgid "Build status code"
 msgstr "生产状态代码"
 
 #: build/models.py:287 build/serializers.py:218 order/serializers.py:272
-#: stock/models.py:622 templates/js/translated/order.js:573
+#: stock/models.py:637 templates/js/translated/order.js:573
 msgid "Batch Code"
 msgstr "批量代码"
 
@@ -783,7 +783,7 @@ msgstr "批量代码"
 msgid "Batch code for this build output"
 msgstr "此生产产出的批量代码"
 
-#: build/models.py:294 order/models.py:129 part/models.py:999
+#: build/models.py:294 order/models.py:129 part/models.py:1007
 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467
 msgid "Creation Date"
 msgstr "创建日期"
@@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "生产完成的目标日期。生产将在此日期之后逾期。"
 
 #: build/models.py:302 order/models.py:255
-#: templates/js/translated/build.js:2055
+#: templates/js/translated/build.js:2070
 msgid "Completion Date"
 msgstr "完成日期:"
 
@@ -805,7 +805,7 @@ msgstr "完成日期:"
 msgid "completed by"
 msgstr "完成人"
 
-#: build/models.py:316 templates/js/translated/build.js:2023
+#: build/models.py:316 templates/js/translated/build.js:2038
 msgid "Issued by"
 msgstr "发布者"
 
@@ -816,9 +816,9 @@ msgstr "发布此生产订单的用户"
 #: build/models.py:325 build/templates/build/build_base.html:190
 #: build/templates/build/detail.html:116 order/models.py:143
 #: order/templates/order/order_base.html:170
-#: order/templates/order/sales_order_base.html:182 part/models.py:1003
+#: order/templates/order/sales_order_base.html:182 part/models.py:1011
 #: report/templates/report/inventree_build_order_base.html:159
-#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005
+#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005
 msgid "Responsible"
 msgstr "责任人"
 
@@ -829,7 +829,7 @@ msgstr "负责此生产订单的用户"
 #: build/models.py:331 build/templates/build/detail.html:102
 #: company/templates/company/manufacturer_part.html:102
 #: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:616
+#: part/templates/part/part_base.html:354 stock/models.py:631
 #: stock/templates/stock/item_base.html:352
 msgid "External Link"
 msgstr "外部链接"
@@ -839,17 +839,17 @@ msgstr "外部链接"
 #: company/models.py:577 company/templates/company/sidebar.html:25
 #: order/models.py:147 order/models.py:845 order/models.py:1107
 #: order/templates/order/po_sidebar.html:11
-#: order/templates/order/so_sidebar.html:17 part/models.py:988
-#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57
+#: order/templates/order/so_sidebar.html:17 part/models.py:996
+#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62
 #: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688
-#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332
+#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703
+#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332
 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927
 #: stock/templates/stock/stock_sidebar.html:25
 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934
 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344
 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507
-#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891
+#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901
 msgid "Notes"
 msgstr "备注"
 
@@ -869,69 +869,69 @@ msgstr "生产产出已完成"
 msgid "Build output does not match Build Order"
 msgstr "生产产出与订单不匹配"
 
-#: build/models.py:1162
+#: build/models.py:1168
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1171
+#: build/models.py:1177
 #, python-brace-format
 msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})"
 msgstr ""
 
-#: build/models.py:1181
+#: build/models.py:1187
 msgid "Stock item is over-allocated"
 msgstr "库存物品分配过度!"
 
-#: build/models.py:1187 order/models.py:1225
+#: build/models.py:1193 order/models.py:1225
 msgid "Allocation quantity must be greater than zero"
 msgstr "分配数量必须大于0"
 
-#: build/models.py:1193
+#: build/models.py:1199
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1250
+#: build/models.py:1256
 msgid "Selected stock item not found in BOM"
 msgstr ""
 
-#: build/models.py:1319 stock/templates/stock/item_base.html:324
-#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951
+#: build/models.py:1325 stock/templates/stock/item_base.html:324
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966
 #: templates/navbar.html:35
 msgid "Build"
 msgstr "生产"
 
-#: build/models.py:1320
+#: build/models.py:1326
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783
+#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783
 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635
 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9
 #: stock/templates/stock/item_base.html:23
 #: stock/templates/stock/item_base.html:346
 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693
-#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103
+#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118
 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782
 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042
 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235
-#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684
-#: templates/js/translated/stock.js:2709
+#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694
+#: templates/js/translated/stock.js:2719
 msgid "Stock Item"
 msgstr "库存项"
 
-#: build/models.py:1337
+#: build/models.py:1343
 msgid "Source stock item"
 msgstr "源库存项"
 
-#: build/models.py:1349 build/serializers.py:188
+#: build/models.py:1355 build/serializers.py:188
 #: build/templates/build/build_base.html:82
-#: build/templates/build/detail.html:35 common/models.py:1317
+#: build/templates/build/detail.html:35 common/models.py:1328
 #: company/forms.py:42 company/templates/company/supplier_part.html:251
 #: order/models.py:836 order/models.py:1265 order/serializers.py:903
 #: order/templates/order/order_wizard/match_parts.html:30
 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144
-#: part/forms.py:160 part/forms.py:176 part/models.py:2722
-#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080
+#: part/forms.py:160 part/forms.py:176 part/models.py:2730
+#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100
 #: part/templates/part/part_pricing.html:16
 #: part/templates/part/upload_bom.html:53
 #: report/templates/report/inventree_build_order_base.html:114
@@ -946,29 +946,30 @@ msgstr "源库存项"
 #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778
 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524
 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912
-#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298
-#: templates/js/translated/build.js:1669
+#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310
+#: templates/js/translated/build.js:1683
 #: templates/js/translated/model_renderers.js:99
 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229
 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064
 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241
-#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907
-#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008
-#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390
-#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714
-#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860
+#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908
+#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092
+#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204
+#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554
+#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768
+#: templates/js/translated/stock.js:2870
 msgid "Quantity"
 msgstr "数量"
 
-#: build/models.py:1350
+#: build/models.py:1356
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1358
+#: build/models.py:1364
 msgid "Install into"
 msgstr "安装到"
 
-#: build/models.py:1359
+#: build/models.py:1365
 msgid "Destination stock item"
 msgstr ""
 
@@ -998,7 +999,7 @@ msgstr "输入生产产出数量"
 
 #: build/serializers.py:201 build/serializers.py:596 order/models.py:280
 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836
-#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305
+#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -1013,7 +1014,7 @@ msgstr ""
 #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907
 #: stock/forms.py:78 stock/serializers.py:314
 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237
-#: templates/js/translated/stock.js:391
+#: templates/js/translated/stock.js:401
 msgid "Serial Numbers"
 msgstr "序列号"
 
@@ -1042,12 +1043,12 @@ msgstr ""
 #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292
 #: templates/js/translated/barcode.js:384
 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700
-#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611
+#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611
 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160
 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249
-#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520
-#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892
-#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650
+#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530
+#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902
+#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660
 msgid "Location"
 msgstr "地点"
 
@@ -1058,10 +1059,10 @@ msgstr ""
 #: build/serializers.py:377 build/templates/build/build_base.html:142
 #: build/templates/build/detail.html:63 order/models.py:579
 #: order/serializers.py:290 stock/templates/stock/item_base.html:182
-#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007
+#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022
 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975
-#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738
-#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876
+#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748
+#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886
 msgid "Status"
 msgstr "状态"
 
@@ -1097,8 +1098,8 @@ msgstr ""
 msgid "No build outputs have been created for this build order"
 msgstr ""
 
-#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846
-#: part/models.py:3005
+#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854
+#: part/models.py:3013
 msgid "BOM Item"
 msgstr ""
 
@@ -1135,23 +1136,31 @@ msgstr ""
 msgid "Allocation items must be provided"
 msgstr ""
 
-#: build/serializers.py:730
+#: build/serializers.py:731
 msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
 msgstr ""
 
-#: build/serializers.py:735
+#: build/serializers.py:739
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:740
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:745
 msgid "Interchangeable Stock"
 msgstr ""
 
-#: build/serializers.py:736
+#: build/serializers.py:746
 msgid "Stock items in multiple locations can be used interchangeably"
 msgstr ""
 
-#: build/serializers.py:741
+#: build/serializers.py:751
 msgid "Substitute Stock"
 msgstr ""
 
-#: build/serializers.py:742
+#: build/serializers.py:752
 msgid "Allow allocation of substitute parts"
 msgstr ""
 
@@ -1226,9 +1235,9 @@ msgstr ""
 #: order/templates/order/order_base.html:156
 #: order/templates/order/sales_order_base.html:163
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992
+#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992
 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475
-#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911
+#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912
 msgid "Target Date"
 msgstr "预计日期"
 
@@ -1250,7 +1259,7 @@ msgstr "逾期"
 #: build/templates/build/build_base.html:163
 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143
 #: order/templates/order/sales_order_base.html:170
-#: templates/js/translated/build.js:1993
+#: templates/js/translated/build.js:2008
 #: templates/js/translated/table_filters.js:365
 msgid "Completed"
 msgstr "已完成"
@@ -1262,7 +1271,7 @@ msgstr "已完成"
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
 #: stock/templates/stock/item_base.html:286
-#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392
+#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402
 msgid "Sales Order"
 msgstr "销售订单"
 
@@ -1273,6 +1282,7 @@ msgid "Issued By"
 msgstr "发布者"
 
 #: build/templates/build/build_base.html:228
+#: build/templates/build/sidebar.html:12
 msgid "Incomplete Outputs"
 msgstr "未完成输出"
 
@@ -1311,7 +1321,7 @@ msgstr ""
 
 #: build/templates/build/detail.html:81
 #: stock/templates/stock/item_base.html:310
-#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883
+#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893
 #: templates/js/translated/table_filters.js:151
 #: templates/js/translated/table_filters.js:238
 msgid "Batch"
@@ -1320,7 +1330,7 @@ msgstr ""
 #: build/templates/build/detail.html:127
 #: order/templates/order/order_base.html:143
 #: order/templates/order/sales_order_base.html:157
-#: templates/js/translated/build.js:2015
+#: templates/js/translated/build.js:2030
 msgid "Created"
 msgstr "已创建"
 
@@ -1340,7 +1350,7 @@ msgstr "子生产订单"
 msgid "Allocate Stock to Build"
 msgstr "为生产分配库存"
 
-#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485
+#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499
 msgid "Unallocate stock"
 msgstr "未分配库存"
 
@@ -1431,8 +1441,8 @@ msgstr ""
 #: order/templates/order/po_sidebar.html:9
 #: order/templates/order/purchase_order_detail.html:60
 #: order/templates/order/sales_order_detail.html:107
-#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217
-#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105
+#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232
+#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105
 #: stock/templates/stock/stock_sidebar.html:23
 msgid "Attachments"
 msgstr "附件"
@@ -1441,27 +1451,27 @@ msgstr "附件"
 msgid "Build Notes"
 msgstr "生产备注"
 
-#: build/templates/build/detail.html:305 build/templates/build/detail.html:481
+#: build/templates/build/detail.html:305 build/templates/build/detail.html:389
 #: company/templates/company/detail.html:190
 #: company/templates/company/detail.html:217
 #: order/templates/order/purchase_order_detail.html:80
 #: order/templates/order/purchase_order_detail.html:108
 #: order/templates/order/sales_order_detail.html:127
 #: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125
+#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125
 #: stock/templates/stock/item.html:223
 msgid "Edit Notes"
 msgstr "编辑备注"
 
-#: build/templates/build/detail.html:519
+#: build/templates/build/detail.html:526
 msgid "Allocation Complete"
 msgstr ""
 
-#: build/templates/build/detail.html:520
+#: build/templates/build/detail.html:527
 msgid "All untracked stock items have been allocated"
 msgstr ""
 
-#: build/templates/build/index.html:18 part/templates/part/detail.html:322
+#: build/templates/build/index.html:18 part/templates/part/detail.html:337
 msgid "New Build Order"
 msgstr "新建生产订单"
 
@@ -1485,12 +1495,8 @@ msgstr "列表视图"
 msgid "Build Order Details"
 msgstr ""
 
-#: build/templates/build/sidebar.html:12
-msgid "Pending Items"
-msgstr ""
-
 #: build/templates/build/sidebar.html:15
-msgid "Completed Items"
+msgid "Completed Outputs"
 msgstr ""
 
 #: build/views.py:73
@@ -1538,760 +1544,768 @@ msgstr ""
 msgid "Select {name} file to upload"
 msgstr ""
 
-#: common/models.py:352
+#: common/models.py:356
 msgid "Settings key (must be unique - case insensitive)"
 msgstr ""
 
-#: common/models.py:354
+#: common/models.py:358
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:388
+#: common/models.py:392
 msgid "Chosen value is not a valid option"
 msgstr ""
 
-#: common/models.py:408
+#: common/models.py:412
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:419
+#: common/models.py:423
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:442
+#: common/models.py:446
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:588
+#: common/models.py:592
 msgid "No group"
 msgstr ""
 
-#: common/models.py:630
+#: common/models.py:634
 msgid "Restart required"
 msgstr ""
 
-#: common/models.py:631
+#: common/models.py:635
 msgid "A setting has been changed which requires a server restart"
 msgstr ""
 
-#: common/models.py:638
+#: common/models.py:642
 msgid "InvenTree Instance Name"
 msgstr ""
 
-#: common/models.py:640
+#: common/models.py:644
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:644
+#: common/models.py:648
 msgid "Use instance name"
 msgstr ""
 
-#: common/models.py:645
+#: common/models.py:649
 msgid "Use the instance name in the title-bar"
 msgstr ""
 
-#: common/models.py:651 company/models.py:100 company/models.py:101
+#: common/models.py:655 company/models.py:100 company/models.py:101
 msgid "Company name"
 msgstr "公司名称"
 
-#: common/models.py:652
+#: common/models.py:656
 msgid "Internal company name"
 msgstr "内部公司名称"
 
-#: common/models.py:657
+#: common/models.py:661
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:658
+#: common/models.py:662
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:664
+#: common/models.py:668
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:665
+#: common/models.py:669
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:671
+#: common/models.py:675
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:672
+#: common/models.py:676
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:679
+#: common/models.py:683
 msgid "Enable barcode scanner support"
 msgstr "启用条形码扫描支持"
 
-#: common/models.py:685
+#: common/models.py:689
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:686
+#: common/models.py:690
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:690
+#: common/models.py:694
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:691
+#: common/models.py:695
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:697
+#: common/models.py:701
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:698
+#: common/models.py:702
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:704
+#: common/models.py:708
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:705
+#: common/models.py:709
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:711
+#: common/models.py:715
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:712
+#: common/models.py:716
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:718
+#: common/models.py:722
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:719
+#: common/models.py:723
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:725
+#: common/models.py:729
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:726
+#: common/models.py:730
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:732 part/models.py:2541 report/models.py:187
+#: common/models.py:736 part/models.py:2549 report/models.py:187
 #: templates/js/translated/table_filters.js:38
 #: templates/js/translated/table_filters.js:417
 msgid "Template"
 msgstr "模板"
 
-#: common/models.py:733
+#: common/models.py:737
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305
+#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305
 #: templates/js/translated/table_filters.js:168
 #: templates/js/translated/table_filters.js:429
 msgid "Assembly"
 msgstr "组装"
 
-#: common/models.py:740
+#: common/models.py:744
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:746 part/models.py:957
+#: common/models.py:750 part/models.py:965
 #: templates/js/translated/table_filters.js:433
 msgid "Component"
 msgstr "组件"
 
-#: common/models.py:747
+#: common/models.py:751
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:753 part/models.py:968
+#: common/models.py:757 part/models.py:976
 msgid "Purchaseable"
 msgstr "可购买"
 
-#: common/models.py:754
+#: common/models.py:758
 msgid "Parts are purchaseable by default"
 msgstr "商品默认可购买"
 
-#: common/models.py:760 part/models.py:973
+#: common/models.py:764 part/models.py:981
 #: templates/js/translated/table_filters.js:441
 msgid "Salable"
 msgstr "可销售"
 
-#: common/models.py:761
+#: common/models.py:765
 msgid "Parts are salable by default"
 msgstr "商品默认可销售"
 
-#: common/models.py:767 part/models.py:963
+#: common/models.py:771 part/models.py:971
 #: templates/js/translated/table_filters.js:46
 #: templates/js/translated/table_filters.js:100
 #: templates/js/translated/table_filters.js:445
 msgid "Trackable"
 msgstr "可追踪"
 
-#: common/models.py:768
+#: common/models.py:772
 msgid "Parts are trackable by default"
 msgstr "商品默认可跟踪"
 
-#: common/models.py:774 part/models.py:983
+#: common/models.py:778 part/models.py:991
 #: part/templates/part/part_base.html:147
 #: templates/js/translated/table_filters.js:42
 msgid "Virtual"
 msgstr "虚拟"
 
-#: common/models.py:775
+#: common/models.py:779
 msgid "Parts are virtual by default"
 msgstr "商品默认是虚拟的"
 
-#: common/models.py:781
+#: common/models.py:785
 msgid "Show Import in Views"
 msgstr "视图中显示导入"
 
-#: common/models.py:782
+#: common/models.py:786
 msgid "Display the import wizard in some part views"
 msgstr "在一些商品视图中显示导入向导"
 
-#: common/models.py:788
+#: common/models.py:792
 msgid "Show Price in Forms"
 msgstr "在表格中显示价格"
 
-#: common/models.py:789
+#: common/models.py:793
 msgid "Display part price in some forms"
 msgstr "以某些表格显示商品价格"
 
-#: common/models.py:800
+#: common/models.py:804
 msgid "Show Price in BOM"
 msgstr ""
 
-#: common/models.py:801
+#: common/models.py:805
 msgid "Include pricing information in BOM tables"
 msgstr ""
 
-#: common/models.py:812
+#: common/models.py:816
 msgid "Show Price History"
 msgstr ""
 
-#: common/models.py:813
+#: common/models.py:817
 msgid "Display historical pricing for Part"
 msgstr ""
 
-#: common/models.py:819
+#: common/models.py:823
 msgid "Show related parts"
 msgstr "显示相关商品"
 
-#: common/models.py:820
+#: common/models.py:824
 msgid "Display related parts for a part"
 msgstr ""
 
-#: common/models.py:826
+#: common/models.py:830
 msgid "Create initial stock"
 msgstr "创建初始库存"
 
-#: common/models.py:827
+#: common/models.py:831
 msgid "Create initial stock on part creation"
 msgstr ""
 
-#: common/models.py:833
+#: common/models.py:837
 msgid "Internal Prices"
 msgstr "内部价格"
 
-#: common/models.py:834
+#: common/models.py:838
 msgid "Enable internal prices for parts"
 msgstr "启用内部商品价格"
 
-#: common/models.py:840
+#: common/models.py:844
 msgid "Internal Price as BOM-Price"
 msgstr "内部价格为BOM价格"
 
-#: common/models.py:841
+#: common/models.py:845
 msgid "Use the internal price (if set) in BOM-price calculations"
 msgstr "在 BOM价格计算中使用内部价格(如设置)"
 
-#: common/models.py:847
+#: common/models.py:851
 msgid "Part Name Display Format"
 msgstr ""
 
-#: common/models.py:848
+#: common/models.py:852
 msgid "Format to display the part name"
 msgstr ""
 
-#: common/models.py:855
+#: common/models.py:859
 msgid "Enable Reports"
 msgstr ""
 
-#: common/models.py:856
+#: common/models.py:860
 msgid "Enable generation of reports"
 msgstr ""
 
-#: common/models.py:862 templates/stats.html:25
+#: common/models.py:866 templates/stats.html:25
 msgid "Debug Mode"
 msgstr "调试模式"
 
-#: common/models.py:863
+#: common/models.py:867
 msgid "Generate reports in debug mode (HTML output)"
 msgstr "在调试模式生成报告(HTML输出)"
 
-#: common/models.py:869
+#: common/models.py:873
 msgid "Page Size"
 msgstr "页面大小"
 
-#: common/models.py:870
+#: common/models.py:874
 msgid "Default page size for PDF reports"
 msgstr "PDF 报表默认页面大小"
 
-#: common/models.py:880
+#: common/models.py:884
 msgid "Test Reports"
 msgstr "测试报表"
 
-#: common/models.py:881
+#: common/models.py:885
 msgid "Enable generation of test reports"
 msgstr "启用生成测试报表"
 
-#: common/models.py:887
+#: common/models.py:891
 msgid "Stock Expiry"
 msgstr "库存到期"
 
-#: common/models.py:888
+#: common/models.py:892
 msgid "Enable stock expiry functionality"
 msgstr "启用库存到期功能"
 
-#: common/models.py:894
+#: common/models.py:898
 msgid "Sell Expired Stock"
 msgstr "销售过期库存"
 
-#: common/models.py:895
+#: common/models.py:899
 msgid "Allow sale of expired stock"
 msgstr "允许销售过期库存"
 
-#: common/models.py:901
+#: common/models.py:905
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:902
+#: common/models.py:906
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:904
+#: common/models.py:908
 msgid "days"
 msgstr "天"
 
-#: common/models.py:909
+#: common/models.py:913
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:910
+#: common/models.py:914
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:916
+#: common/models.py:920
 msgid "Stock Ownership Control"
 msgstr "库存所有权控制"
 
-#: common/models.py:917
+#: common/models.py:921
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:923
+#: common/models.py:927
 msgid "Build Order Reference Prefix"
 msgstr "生产订单参考前缀"
 
-#: common/models.py:924
+#: common/models.py:928
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:929
+#: common/models.py:933
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:930
+#: common/models.py:934
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:934
+#: common/models.py:938
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:935
+#: common/models.py:939
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:940
+#: common/models.py:944
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:941
+#: common/models.py:945
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:947
+#: common/models.py:951
 msgid "Enable password forgot"
 msgstr ""
 
-#: common/models.py:948
+#: common/models.py:952
 msgid "Enable password forgot function on the login pages"
 msgstr ""
 
-#: common/models.py:953
+#: common/models.py:957
 msgid "Enable registration"
 msgstr ""
 
-#: common/models.py:954
+#: common/models.py:958
 msgid "Enable self-registration for users on the login pages"
 msgstr ""
 
-#: common/models.py:959
+#: common/models.py:963
 msgid "Enable SSO"
 msgstr ""
 
-#: common/models.py:960
+#: common/models.py:964
 msgid "Enable SSO on the login pages"
 msgstr ""
 
-#: common/models.py:965
+#: common/models.py:969
 msgid "Email required"
 msgstr ""
 
-#: common/models.py:966
+#: common/models.py:970
 msgid "Require user to supply mail on signup"
 msgstr ""
 
-#: common/models.py:971
+#: common/models.py:975
 msgid "Auto-fill SSO users"
 msgstr ""
 
-#: common/models.py:972
+#: common/models.py:976
 msgid "Automatically fill out user-details from SSO account-data"
 msgstr ""
 
-#: common/models.py:977
+#: common/models.py:981
 msgid "Mail twice"
 msgstr ""
 
-#: common/models.py:978
+#: common/models.py:982
 msgid "On signup ask users twice for their mail"
 msgstr ""
 
-#: common/models.py:983
+#: common/models.py:987
 msgid "Password twice"
 msgstr ""
 
-#: common/models.py:984
+#: common/models.py:988
 msgid "On signup ask users twice for their password"
 msgstr ""
 
-#: common/models.py:989
+#: common/models.py:993
 msgid "Group on signup"
 msgstr ""
 
-#: common/models.py:990
+#: common/models.py:994
 msgid "Group to which new users are assigned on registration"
 msgstr ""
 
-#: common/models.py:995
+#: common/models.py:999
 msgid "Enforce MFA"
 msgstr ""
 
-#: common/models.py:996
+#: common/models.py:1000
 msgid "Users must use multifactor security."
 msgstr ""
 
-#: common/models.py:1003
+#: common/models.py:1007
 msgid "Enable URL integration"
 msgstr ""
 
-#: common/models.py:1004
+#: common/models.py:1008
 msgid "Enable plugins to add URL routes"
 msgstr ""
 
-#: common/models.py:1010
+#: common/models.py:1014
 msgid "Enable navigation integration"
 msgstr ""
 
-#: common/models.py:1011
+#: common/models.py:1015
 msgid "Enable plugins to integrate into navigation"
 msgstr ""
 
-#: common/models.py:1017
+#: common/models.py:1021
 msgid "Enable app integration"
 msgstr ""
 
-#: common/models.py:1018
+#: common/models.py:1022
 msgid "Enable plugins to add apps"
 msgstr ""
 
-#: common/models.py:1024
+#: common/models.py:1028
 msgid "Enable schedule integration"
 msgstr ""
 
-#: common/models.py:1025
+#: common/models.py:1029
 msgid "Enable plugins to run scheduled tasks"
 msgstr ""
 
-#: common/models.py:1031
+#: common/models.py:1035
 msgid "Enable event integration"
 msgstr ""
 
-#: common/models.py:1032
+#: common/models.py:1036
 msgid "Enable plugins to respond to internal events"
 msgstr ""
 
-#: common/models.py:1047 common/models.py:1270
+#: common/models.py:1051 common/models.py:1281
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:1078
+#: common/models.py:1082
 msgid "Show subscribed parts"
 msgstr ""
 
-#: common/models.py:1079
+#: common/models.py:1083
 msgid "Show subscribed parts on the homepage"
 msgstr ""
 
-#: common/models.py:1084
+#: common/models.py:1088
 msgid "Show subscribed categories"
 msgstr ""
 
-#: common/models.py:1085
+#: common/models.py:1089
 msgid "Show subscribed part categories on the homepage"
 msgstr ""
 
-#: common/models.py:1090
+#: common/models.py:1094
 msgid "Show latest parts"
 msgstr "显示最近商品"
 
-#: common/models.py:1091
+#: common/models.py:1095
 msgid "Show latest parts on the homepage"
 msgstr "在主页上显示最近商品"
 
-#: common/models.py:1096
+#: common/models.py:1100
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:1097
+#: common/models.py:1101
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:1103
+#: common/models.py:1107
 msgid "Show unvalidated BOMs"
 msgstr ""
 
-#: common/models.py:1104
+#: common/models.py:1108
 msgid "Show BOMs that await validation on the homepage"
 msgstr ""
 
-#: common/models.py:1109
+#: common/models.py:1113
 msgid "Show recent stock changes"
 msgstr ""
 
-#: common/models.py:1110
+#: common/models.py:1114
 msgid "Show recently changed stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1115
+#: common/models.py:1119
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:1116
+#: common/models.py:1120
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:1121
+#: common/models.py:1125
 msgid "Show low stock"
 msgstr ""
 
-#: common/models.py:1122
+#: common/models.py:1126
 msgid "Show low stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1127
+#: common/models.py:1131
 msgid "Show depleted stock"
 msgstr ""
 
-#: common/models.py:1128
+#: common/models.py:1132
 msgid "Show depleted stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1133
+#: common/models.py:1137
 msgid "Show needed stock"
 msgstr ""
 
-#: common/models.py:1134
+#: common/models.py:1138
 msgid "Show stock items needed for builds on the homepage"
 msgstr ""
 
-#: common/models.py:1139
+#: common/models.py:1143
 msgid "Show expired stock"
 msgstr ""
 
-#: common/models.py:1140
+#: common/models.py:1144
 msgid "Show expired stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1145
+#: common/models.py:1149
 msgid "Show stale stock"
 msgstr ""
 
-#: common/models.py:1146
+#: common/models.py:1150
 msgid "Show stale stock items on the homepage"
 msgstr ""
 
-#: common/models.py:1151
+#: common/models.py:1155
 msgid "Show pending builds"
 msgstr ""
 
-#: common/models.py:1152
+#: common/models.py:1156
 msgid "Show pending builds on the homepage"
 msgstr ""
 
-#: common/models.py:1157
+#: common/models.py:1161
 msgid "Show overdue builds"
 msgstr "显示逾期生产"
 
-#: common/models.py:1158
+#: common/models.py:1162
 msgid "Show overdue builds on the homepage"
 msgstr "在主页上显示逾期的生产"
 
-#: common/models.py:1163
+#: common/models.py:1167
 msgid "Show outstanding POs"
 msgstr ""
 
-#: common/models.py:1164
+#: common/models.py:1168
 msgid "Show outstanding POs on the homepage"
 msgstr ""
 
-#: common/models.py:1169
+#: common/models.py:1173
 msgid "Show overdue POs"
 msgstr ""
 
-#: common/models.py:1170
+#: common/models.py:1174
 msgid "Show overdue POs on the homepage"
 msgstr ""
 
-#: common/models.py:1175
+#: common/models.py:1179
 msgid "Show outstanding SOs"
 msgstr ""
 
-#: common/models.py:1176
+#: common/models.py:1180
 msgid "Show outstanding SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1181
+#: common/models.py:1185
 msgid "Show overdue SOs"
 msgstr ""
 
-#: common/models.py:1182
+#: common/models.py:1186
 msgid "Show overdue SOs on the homepage"
 msgstr ""
 
-#: common/models.py:1188
+#: common/models.py:1192
 msgid "Inline label display"
 msgstr "内嵌标签显示"
 
-#: common/models.py:1189
+#: common/models.py:1193
 msgid "Display PDF labels in the browser, instead of downloading as a file"
 msgstr "在浏览器中显示 PDF 标签,而不是以文件形式下载"
 
-#: common/models.py:1195
+#: common/models.py:1199
 msgid "Inline report display"
 msgstr ""
 
-#: common/models.py:1196
+#: common/models.py:1200
 msgid "Display PDF reports in the browser, instead of downloading as a file"
 msgstr "在浏览器中显示 PDF 报告,而不是以文件形式下载"
 
-#: common/models.py:1202
+#: common/models.py:1206
 msgid "Search Preview Results"
 msgstr "搜索预览结果"
 
-#: common/models.py:1203
+#: common/models.py:1207
 msgid "Number of results to show in search preview window"
 msgstr "搜索预览窗口中显示的结果数"
 
-#: common/models.py:1209
+#: common/models.py:1213
 msgid "Search Show Stock"
 msgstr ""
 
-#: common/models.py:1210
+#: common/models.py:1214
 msgid "Display stock levels in search preview window"
 msgstr ""
 
-#: common/models.py:1216
+#: common/models.py:1220
 msgid "Hide Inactive Parts"
 msgstr ""
 
-#: common/models.py:1217
+#: common/models.py:1221
 msgid "Hide inactive parts in search preview window"
 msgstr ""
 
-#: common/models.py:1223
+#: common/models.py:1227
 msgid "Show Quantity in Forms"
 msgstr "在表格中显示数量"
 
-#: common/models.py:1224
+#: common/models.py:1228
 msgid "Display available part quantity in some forms"
 msgstr "在某些表格中显示可用的商品数量"
 
-#: common/models.py:1230
+#: common/models.py:1234
 msgid "Escape Key Closes Forms"
 msgstr ""
 
-#: common/models.py:1231
+#: common/models.py:1235
 msgid "Use the escape key to close modal forms"
 msgstr ""
 
-#: common/models.py:1237
+#: common/models.py:1241
 msgid "Fixed Navbar"
 msgstr ""
 
-#: common/models.py:1238
+#: common/models.py:1242
 msgid "InvenTree navbar position is fixed to the top of the screen"
 msgstr ""
 
-#: common/models.py:1244
+#: common/models.py:1248
 msgid "Date Format"
 msgstr ""
 
-#: common/models.py:1245
+#: common/models.py:1249
 msgid "Preferred format for displaying dates"
 msgstr ""
 
-#: common/models.py:1318 company/forms.py:43
+#: common/models.py:1263 part/templates/part/detail.html:40
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:1264
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:1329 company/forms.py:43
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:1325 company/serializers.py:264
+#: common/models.py:1336 company/serializers.py:264
 #: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890
+#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891
 msgid "Price"
 msgstr "价格"
 
-#: common/models.py:1326
+#: common/models.py:1337
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:1483 common/models.py:1622
+#: common/models.py:1494 common/models.py:1633
 msgid "Endpoint"
 msgstr ""
 
-#: common/models.py:1484
+#: common/models.py:1495
 msgid "Endpoint at which this webhook is received"
 msgstr ""
 
-#: common/models.py:1493
+#: common/models.py:1504
 msgid "Name for this webhook"
 msgstr ""
 
-#: common/models.py:1498 part/models.py:978 plugin/models.py:46
+#: common/models.py:1509 part/models.py:986 plugin/models.py:46
 #: templates/js/translated/table_filters.js:34
 #: templates/js/translated/table_filters.js:96
 #: templates/js/translated/table_filters.js:290
@@ -2299,67 +2313,67 @@ msgstr ""
 msgid "Active"
 msgstr ""
 
-#: common/models.py:1499
+#: common/models.py:1510
 msgid "Is this webhook active"
 msgstr ""
 
-#: common/models.py:1513
+#: common/models.py:1524
 msgid "Token"
 msgstr ""
 
-#: common/models.py:1514
+#: common/models.py:1525
 msgid "Token for access"
 msgstr ""
 
-#: common/models.py:1521
+#: common/models.py:1532
 msgid "Secret"
 msgstr ""
 
-#: common/models.py:1522
+#: common/models.py:1533
 msgid "Shared secret for HMAC"
 msgstr ""
 
-#: common/models.py:1589
+#: common/models.py:1600
 msgid "Message ID"
 msgstr ""
 
-#: common/models.py:1590
+#: common/models.py:1601
 msgid "Unique identifier for this message"
 msgstr ""
 
-#: common/models.py:1598
+#: common/models.py:1609
 msgid "Host"
 msgstr ""
 
-#: common/models.py:1599
+#: common/models.py:1610
 msgid "Host from which this message was received"
 msgstr ""
 
-#: common/models.py:1606
+#: common/models.py:1617
 msgid "Header"
 msgstr ""
 
-#: common/models.py:1607
+#: common/models.py:1618
 msgid "Header of this message"
 msgstr ""
 
-#: common/models.py:1613
+#: common/models.py:1624
 msgid "Body"
 msgstr ""
 
-#: common/models.py:1614
+#: common/models.py:1625
 msgid "Body of this message"
 msgstr ""
 
-#: common/models.py:1623
+#: common/models.py:1634
 msgid "Endpoint on which this message was received"
 msgstr ""
 
-#: common/models.py:1628
+#: common/models.py:1639
 msgid "Worked on"
 msgstr ""
 
-#: common/models.py:1629
+#: common/models.py:1640
 msgid "Was the work on this message finished?"
 msgstr ""
 
@@ -2463,7 +2477,7 @@ msgstr ""
 msgid "Link to external company information"
 msgstr "链接到外部公司信息"
 
-#: company/models.py:139 part/models.py:870
+#: company/models.py:139 part/models.py:878
 msgid "Image"
 msgstr "图片"
 
@@ -2500,7 +2514,7 @@ msgstr "货币"
 msgid "Default currency used for this company"
 msgstr "该公司使用的默认货币"
 
-#: company/models.py:320 company/models.py:535 stock/models.py:560
+#: company/models.py:320 company/models.py:535 stock/models.py:575
 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541
 msgid "Base Part"
 msgstr ""
@@ -2515,12 +2529,12 @@ msgstr "选择商品"
 #: stock/templates/stock/item_base.html:359
 #: templates/js/translated/company.js:333
 #: templates/js/translated/company.js:517
-#: templates/js/translated/company.js:800 templates/js/translated/part.js:234
+#: templates/js/translated/company.js:800 templates/js/translated/part.js:235
 #: templates/js/translated/table_filters.js:384
 msgid "Manufacturer"
 msgstr "制造商"
 
-#: company/models.py:336 templates/js/translated/part.js:235
+#: company/models.py:336 templates/js/translated/part.js:236
 msgid "Select manufacturer"
 msgstr "选择制造商"
 
@@ -2528,11 +2542,11 @@ msgstr "选择制造商"
 #: company/templates/company/supplier_part.html:105
 #: templates/js/translated/company.js:533
 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211
-#: templates/js/translated/part.js:245 templates/js/translated/part.js:896
+#: templates/js/translated/part.js:246 templates/js/translated/part.js:897
 msgid "MPN"
 msgstr "MPN"
 
-#: company/models.py:343 templates/js/translated/part.js:246
+#: company/models.py:343 templates/js/translated/part.js:247
 msgid "Manufacturer Part Number"
 msgstr "制造商商品编号"
 
@@ -2557,8 +2571,8 @@ msgstr "参数名称"
 
 #: company/models.py:422
 #: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:2116 templates/js/translated/company.js:647
-#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287
+#: stock/models.py:2131 templates/js/translated/company.js:647
+#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297
 msgid "Value"
 msgstr "数值"
 
@@ -2566,10 +2580,10 @@ msgstr "数值"
 msgid "Parameter value"
 msgstr "参数值"
 
-#: company/models.py:429 part/models.py:945 part/models.py:2509
+#: company/models.py:429 part/models.py:953 part/models.py:2517
 #: part/templates/part/part_base.html:288
 #: templates/InvenTree/settings/settings.html:324
-#: templates/js/translated/company.js:653 templates/js/translated/part.js:722
+#: templates/js/translated/company.js:653 templates/js/translated/part.js:723
 msgid "Units"
 msgstr "单位"
 
@@ -2588,22 +2602,22 @@ msgstr ""
 #: part/bom.py:265 stock/templates/stock/item_base.html:376
 #: templates/js/translated/company.js:337
 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958
-#: templates/js/translated/part.js:215 templates/js/translated/part.js:864
+#: templates/js/translated/part.js:216 templates/js/translated/part.js:865
 #: templates/js/translated/table_filters.js:388
 msgid "Supplier"
 msgstr "供应商"
 
-#: company/models.py:546 templates/js/translated/part.js:216
+#: company/models.py:546 templates/js/translated/part.js:217
 msgid "Select supplier"
 msgstr "选择供应商"
 
 #: company/models.py:551 company/templates/company/supplier_part.html:91
 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198
-#: templates/js/translated/part.js:226 templates/js/translated/part.js:882
+#: templates/js/translated/part.js:227 templates/js/translated/part.js:883
 msgid "SKU"
 msgstr "SKU"
 
-#: company/models.py:552 templates/js/translated/part.js:227
+#: company/models.py:552 templates/js/translated/part.js:228
 msgid "Supplier stock keeping unit"
 msgstr ""
 
@@ -2620,23 +2634,23 @@ msgid "Supplier part description"
 msgstr "供应商商品描述"
 
 #: company/models.py:576 company/templates/company/supplier_part.html:119
-#: part/models.py:2734 part/templates/part/upload_bom.html:59
+#: part/models.py:2742 part/templates/part/upload_bom.html:59
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409
 msgid "Note"
 msgstr "备注"
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:580 part/models.py:1819
+#: company/models.py:580 part/models.py:1827
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr "最低收费(例如库存费)"
 
 #: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:584 stock/templates/stock/item_base.html:317
-#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887
+#: stock/models.py:599 stock/templates/stock/item_base.html:317
+#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897
 msgid "Packaging"
 msgstr "打包"
 
@@ -2644,7 +2658,7 @@ msgstr "打包"
 msgid "Part packaging"
 msgstr "商品打包"
 
-#: company/models.py:584 part/models.py:1821
+#: company/models.py:584 part/models.py:1829
 msgid "multiple"
 msgstr ""
 
@@ -2704,11 +2718,11 @@ msgid "Download image from URL"
 msgstr "从 URL 下载图片"
 
 #: company/templates/company/company_base.html:83 order/models.py:574
-#: order/templates/order/sales_order_base.html:115 stock/models.py:603
-#: stock/models.py:604 stock/serializers.py:683
+#: order/templates/order/sales_order_base.html:115 stock/models.py:618
+#: stock/models.py:619 stock/serializers.py:683
 #: stock/templates/stock/item_base.html:269
 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436
-#: templates/js/translated/stock.js:2691
+#: templates/js/translated/stock.js:2701
 #: templates/js/translated/table_filters.js:392
 msgid "Customer"
 msgstr "客户"
@@ -2739,7 +2753,7 @@ msgstr "创建新的供应商商品"
 
 #: company/templates/company/detail.html:20
 #: company/templates/company/manufacturer_part.html:118
-#: part/templates/part/detail.html:360
+#: part/templates/part/detail.html:375
 msgid "New Supplier Part"
 msgstr "新建供应商商品"
 
@@ -2747,8 +2761,8 @@ msgstr "新建供应商商品"
 #: company/templates/company/detail.html:79
 #: company/templates/company/manufacturer_part.html:127
 #: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:168 part/templates/part/detail.html:369
-#: part/templates/part/detail.html:398
+#: part/templates/part/category.html:168 part/templates/part/detail.html:384
+#: part/templates/part/detail.html:413
 msgid "Options"
 msgstr "选项"
 
@@ -2776,7 +2790,7 @@ msgstr "制造商商品"
 msgid "Create new manufacturer part"
 msgstr "新建制造商商品"
 
-#: company/templates/company/detail.html:67 part/templates/part/detail.html:388
+#: company/templates/company/detail.html:67 part/templates/part/detail.html:403
 msgid "New Manufacturer Part"
 msgstr "新建制造商商品"
 
@@ -2790,7 +2804,7 @@ msgstr "供货商库存"
 #: order/templates/order/order_base.html:13
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40
+#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40
 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
 #: users/models.py:45
@@ -2812,7 +2826,7 @@ msgstr "新建采购订单"
 #: order/templates/order/sales_order_base.html:13
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44
+#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44
 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
 #: users/models.py:46
@@ -2830,7 +2844,7 @@ msgid "New Sales Order"
 msgstr "新建销售订单"
 
 #: company/templates/company/detail.html:168
-#: templates/js/translated/build.js:1282
+#: templates/js/translated/build.js:1294
 msgid "Assigned Stock"
 msgstr ""
 
@@ -2840,13 +2854,13 @@ msgstr "公司备注"
 
 #: company/templates/company/detail.html:380
 #: company/templates/company/manufacturer_part.html:215
-#: part/templates/part/detail.html:442
+#: part/templates/part/detail.html:462
 msgid "Delete Supplier Parts?"
 msgstr "删除供应商商品?"
 
 #: company/templates/company/detail.html:381
 #: company/templates/company/manufacturer_part.html:216
-#: part/templates/part/detail.html:443
+#: part/templates/part/detail.html:463
 msgid "All selected supplier parts will be deleted"
 msgstr "删除所有选定的供应商商品"
 
@@ -2863,7 +2877,7 @@ msgstr "制造商"
 #: company/templates/company/manufacturer_part.html:35
 #: company/templates/company/supplier_part.html:34
 #: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76
 msgid "Order part"
 msgstr "订购商品"
 
@@ -2890,14 +2904,14 @@ msgid "Suppliers"
 msgstr "供应商"
 
 #: company/templates/company/manufacturer_part.html:129
-#: part/templates/part/detail.html:371
+#: part/templates/part/detail.html:386
 msgid "Delete supplier parts"
 msgstr "删除供应商商品"
 
 #: company/templates/company/manufacturer_part.html:129
 #: company/templates/company/manufacturer_part.html:158
 #: company/templates/company/manufacturer_part.html:254
-#: part/templates/part/detail.html:371 part/templates/part/detail.html:400
+#: part/templates/part/detail.html:386 part/templates/part/detail.html:415
 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31
 #: users/models.py:217
 msgid "Delete"
@@ -2906,12 +2920,12 @@ msgstr "删除"
 #: company/templates/company/manufacturer_part.html:143
 #: company/templates/company/manufacturer_part_sidebar.html:5
 #: part/templates/part/category_sidebar.html:17
-#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9
+#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9
 msgid "Parameters"
 msgstr "参数"
 
 #: company/templates/company/manufacturer_part.html:147
-#: part/templates/part/detail.html:196
+#: part/templates/part/detail.html:211
 #: templates/InvenTree/settings/category.html:12
 #: templates/InvenTree/settings/part.html:66
 msgid "New Parameter"
@@ -2922,7 +2936,7 @@ msgid "Delete parameters"
 msgstr "删除参数"
 
 #: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:894
+#: part/templates/part/detail.html:914
 msgid "Add Parameter"
 msgstr "添加参数"
 
@@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items"
 msgstr ""
 
 #: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:568
+#: company/templates/company/supplier_part.html:24 stock/models.py:583
 #: stock/templates/stock/item_base.html:381
-#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844
+#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854
 msgid "Supplier Part"
 msgstr "供应商商品"
 
@@ -2979,7 +2993,7 @@ msgstr ""
 
 #: company/templates/company/supplier_part.html:142
 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166
-#: templates/js/translated/stock.js:367
+#: templates/js/translated/stock.js:377
 msgid "New Stock Item"
 msgstr ""
 
@@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders"
 msgstr "供应商商品订单"
 
 #: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:84
+#: part/templates/part/detail.html:99
 msgid "Order Part"
 msgstr "订购商品"
 
@@ -3030,10 +3044,10 @@ msgstr ""
 #: stock/templates/stock/stock_app_base.html:10
 #: templates/InvenTree/search.html:150
 #: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496
-#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148
-#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891
-#: templates/js/translated/stock.js:1667 templates/navbar.html:28
+#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497
+#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901
+#: templates/js/translated/stock.js:1677 templates/navbar.html:28
 msgid "Stock"
 msgstr "库存"
 
@@ -3056,7 +3070,7 @@ msgstr "定价"
 #: stock/templates/stock/location.html:150
 #: stock/templates/stock/location.html:162
 #: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607
 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43
 msgid "Stock Items"
 msgstr "库存项"
@@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier"
 msgstr ""
 
 #: order/models.py:891 order/models.py:982 order/models.py:1078
-#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359
+#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369
 msgid "Order"
 msgstr ""
 
@@ -3328,8 +3342,8 @@ msgstr ""
 #: order/templates/order/order_base.html:18
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:331
-#: templates/js/translated/order.js:936 templates/js/translated/part.js:839
-#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672
+#: templates/js/translated/order.js:936 templates/js/translated/part.js:840
+#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682
 msgid "Purchase Order"
 msgstr ""
 
@@ -3339,7 +3353,7 @@ msgstr "供应商商品"
 
 #: order/models.py:920 order/templates/order/order_base.html:163
 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313
-#: templates/js/translated/part.js:933 templates/js/translated/part.js:960
+#: templates/js/translated/part.js:934 templates/js/translated/part.js:961
 #: templates/js/translated/table_filters.js:312
 msgid "Received"
 msgstr ""
@@ -3348,9 +3362,9 @@ msgstr ""
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697
+#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712
 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338
-#: templates/js/translated/stock.js:1875
+#: templates/js/translated/stock.js:1885
 msgid "Purchase Price"
 msgstr "采购价格"
 
@@ -3606,7 +3620,7 @@ msgstr ""
 
 #: order/templates/order/order_base.html:94
 #: order/templates/order/sales_order_base.html:89
-#: templates/js/translated/stock.js:2415
+#: templates/js/translated/stock.js:2425
 msgid "Order Status"
 msgstr ""
 
@@ -3679,9 +3693,9 @@ msgstr "选择供应商商品"
 #: part/templates/part/import_wizard/match_fields.html:71
 #: part/templates/part/import_wizard/match_references.html:49
 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381
-#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558
+#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572
 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693
-#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735
 #: templates/patterns/wizard/match_fields.html:70
 msgid "Remove row"
 msgstr "移除行"
@@ -3855,7 +3869,7 @@ msgid "Pending Shipments"
 msgstr ""
 
 #: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466
+#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480
 msgid "Actions"
 msgstr ""
 
@@ -3930,35 +3944,51 @@ msgstr ""
 msgid "Updated {part} unit-price to {price} and quantity to {qty}"
 msgstr ""
 
-#: part/api.py:502
+#: part/api.py:491
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:511
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:529
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:561
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:641
 msgid "Valid"
 msgstr ""
 
-#: part/api.py:503
+#: part/api.py:642
 msgid "Validate entire Bill of Materials"
 msgstr ""
 
-#: part/api.py:508
+#: part/api.py:647
 msgid "This option must be selected"
 msgstr ""
 
-#: part/api.py:866
+#: part/api.py:1005
 msgid "Must be greater than zero"
 msgstr "必须大于0"
 
-#: part/api.py:870
+#: part/api.py:1009
 msgid "Must be a valid quantity"
 msgstr "必须是有效的数量"
 
-#: part/api.py:885
+#: part/api.py:1024
 msgid "Specify location for initial part stock"
 msgstr "指定初始初始商品仓储地点"
 
-#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939
+#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078
 msgid "This field is required"
 msgstr "此字段为必填"
 
-#: part/bom.py:125 part/models.py:83 part/models.py:879
+#: part/bom.py:125 part/models.py:112 part/models.py:887
 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338
 msgid "Default Location"
 msgstr "默认仓储地点"
@@ -3972,7 +4002,7 @@ msgid "Available Stock"
 msgstr "可用库存"
 
 #: part/bom.py:128 part/templates/part/part_base.html:203
-#: templates/js/translated/part.js:1324
+#: templates/js/translated/part.js:1325
 msgid "On Order"
 msgstr ""
 
@@ -3992,448 +4022,448 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:84
+#: part/models.py:113
 msgid "Default location for parts in this category"
 msgstr "此类别商品的默认仓储地点"
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords"
 msgstr ""
 
-#: part/models.py:87
+#: part/models.py:116
 msgid "Default keywords for parts in this category"
 msgstr "此类别商品的默认关键字"
 
-#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15
+#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15
 #: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr "商品类别"
 
-#: part/models.py:98 part/templates/part/category.html:128
+#: part/models.py:127 part/templates/part/category.html:128
 #: templates/InvenTree/search.html:95 templates/stats.html:96
 #: users/models.py:40
 msgid "Part Categories"
 msgstr "商品类别"
 
-#: part/models.py:360 part/templates/part/cat_link.html:3
+#: part/models.py:368 part/templates/part/cat_link.html:3
 #: part/templates/part/category.html:17 part/templates/part/category.html:133
 #: part/templates/part/category.html:153
 #: part/templates/part/category_sidebar.html:9
 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
 #: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1686 templates/navbar.html:21
+#: templates/js/translated/part.js:1687 templates/navbar.html:21
 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41
 msgid "Parts"
 msgstr "商品"
 
-#: part/models.py:452
+#: part/models.py:460
 msgid "Invalid choice for parent part"
 msgstr ""
 
-#: part/models.py:532 part/models.py:544
+#: part/models.py:540 part/models.py:552
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:674
+#: part/models.py:682
 msgid "Next available serial numbers are"
 msgstr ""
 
-#: part/models.py:678
+#: part/models.py:686
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:683
+#: part/models.py:691
 msgid "Most recent serial number is"
 msgstr ""
 
-#: part/models.py:778
+#: part/models.py:786
 msgid "Duplicate IPN not allowed in part settings"
 msgstr "在商品设置中不允许重复的IPN"
 
-#: part/models.py:803 part/models.py:2638
+#: part/models.py:811 part/models.py:2646
 msgid "Part name"
 msgstr "商品名称"
 
-#: part/models.py:810
+#: part/models.py:818
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:811
+#: part/models.py:819
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:821
+#: part/models.py:829
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:830
 msgid "Variant Of"
 msgstr ""
 
-#: part/models.py:828
+#: part/models.py:836
 msgid "Part description"
 msgstr "商品描述"
 
-#: part/models.py:833 part/templates/part/category.html:86
+#: part/models.py:841 part/templates/part/category.html:86
 #: part/templates/part/part_base.html:302
 msgid "Keywords"
 msgstr "关键词"
 
-#: part/models.py:834
+#: part/models.py:842
 msgid "Part keywords to improve visibility in search results"
 msgstr "提高搜索结果可见性的关键字"
 
-#: part/models.py:841 part/models.py:2335 part/models.py:2584
+#: part/models.py:849 part/models.py:2343 part/models.py:2592
 #: part/templates/part/part_base.html:265
 #: part/templates/part/set_category.html:15
 #: templates/InvenTree/settings/settings.html:223
-#: templates/js/translated/part.js:1291
+#: templates/js/translated/part.js:1292
 msgid "Category"
 msgstr "类别"
 
-#: part/models.py:842
+#: part/models.py:850
 msgid "Part category"
 msgstr "商品类别"
 
-#: part/models.py:847 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244
-#: templates/js/translated/stock.js:1639
+#: part/models.py:855 part/templates/part/part_base.html:274
+#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245
+#: templates/js/translated/stock.js:1649
 msgid "IPN"
 msgstr ""
 
-#: part/models.py:848
+#: part/models.py:856
 msgid "Internal Part Number"
 msgstr "内部商品编号"
 
-#: part/models.py:854
+#: part/models.py:862
 msgid "Part revision or version number"
 msgstr "商品版本号"
 
-#: part/models.py:855 part/templates/part/part_base.html:281
-#: report/models.py:200 templates/js/translated/part.js:623
+#: part/models.py:863 part/templates/part/part_base.html:281
+#: report/models.py:200 templates/js/translated/part.js:624
 msgid "Revision"
 msgstr ""
 
-#: part/models.py:877
+#: part/models.py:885
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:924 part/templates/part/part_base.html:347
+#: part/models.py:932 part/templates/part/part_base.html:347
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:925
+#: part/models.py:933
 msgid "Default supplier part"
 msgstr "默认供应商商品"
 
-#: part/models.py:932
+#: part/models.py:940
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:933
+#: part/models.py:941
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:938 part/templates/part/part_base.html:196
+#: part/models.py:946 part/templates/part/part_base.html:196
 msgid "Minimum Stock"
 msgstr "最低库存"
 
-#: part/models.py:939
+#: part/models.py:947
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:946
+#: part/models.py:954
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:952
+#: part/models.py:960
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:958
+#: part/models.py:966
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:964
+#: part/models.py:972
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:969
+#: part/models.py:977
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:974
+#: part/models.py:982
 msgid "Can this part be sold to customers?"
 msgstr "此商品可以销售给客户吗?"
 
-#: part/models.py:979
+#: part/models.py:987
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:984
+#: part/models.py:992
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr "这是一个虚拟商品,如软件产品或许可证吗?"
 
-#: part/models.py:989
+#: part/models.py:997
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "BOM checksum"
 msgstr ""
 
-#: part/models.py:992
+#: part/models.py:1000
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:995
+#: part/models.py:1003
 msgid "BOM checked by"
 msgstr ""
 
-#: part/models.py:997
+#: part/models.py:1005
 msgid "BOM checked date"
 msgstr ""
 
-#: part/models.py:1001
+#: part/models.py:1009
 msgid "Creation User"
 msgstr "新建用户"
 
-#: part/models.py:1821
+#: part/models.py:1829
 msgid "Sell multiple"
 msgstr ""
 
-#: part/models.py:2385
+#: part/models.py:2393
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:2402
+#: part/models.py:2410
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:2422 templates/js/translated/part.js:1737
-#: templates/js/translated/stock.js:1267
+#: part/models.py:2430 templates/js/translated/part.js:1738
+#: templates/js/translated/stock.js:1277
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:2423
+#: part/models.py:2431
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:2428
+#: part/models.py:2436
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:2429
+#: part/models.py:2437
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:2434 templates/js/translated/part.js:1746
+#: part/models.py:2442 templates/js/translated/part.js:1747
 #: templates/js/translated/table_filters.js:276
 msgid "Required"
 msgstr ""
 
-#: part/models.py:2435
+#: part/models.py:2443
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:2440 templates/js/translated/part.js:1754
+#: part/models.py:2448 templates/js/translated/part.js:1755
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:2441
+#: part/models.py:2449
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:2446 templates/js/translated/part.js:1761
+#: part/models.py:2454 templates/js/translated/part.js:1762
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:2447
+#: part/models.py:2455
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2458
+#: part/models.py:2466
 #, python-brace-format
 msgid "Illegal character in template name ({c})"
 msgstr ""
 
-#: part/models.py:2494
+#: part/models.py:2502
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2502
+#: part/models.py:2510
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2509
+#: part/models.py:2517
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2539
+#: part/models.py:2547
 msgid "Parent Part"
 msgstr ""
 
-#: part/models.py:2541 part/models.py:2590 part/models.py:2591
+#: part/models.py:2549 part/models.py:2598 part/models.py:2599
 #: templates/InvenTree/settings/settings.html:218
 msgid "Parameter Template"
 msgstr "参数模板"
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Data"
 msgstr ""
 
-#: part/models.py:2543
+#: part/models.py:2551
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2595 templates/InvenTree/settings/settings.html:227
+#: part/models.py:2603 templates/InvenTree/settings/settings.html:227
 msgid "Default Value"
 msgstr "默认值"
 
-#: part/models.py:2596
+#: part/models.py:2604
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2630
+#: part/models.py:2638
 msgid "Part ID or part name"
 msgstr ""
 
-#: part/models.py:2633 templates/js/translated/model_renderers.js:182
+#: part/models.py:2641 templates/js/translated/model_renderers.js:182
 msgid "Part ID"
 msgstr "商品ID"
 
-#: part/models.py:2634
+#: part/models.py:2642
 msgid "Unique part ID value"
 msgstr ""
 
-#: part/models.py:2637
+#: part/models.py:2645
 msgid "Part Name"
 msgstr ""
 
-#: part/models.py:2641
+#: part/models.py:2649
 msgid "Part IPN"
 msgstr ""
 
-#: part/models.py:2642
+#: part/models.py:2650
 msgid "Part IPN value"
 msgstr ""
 
-#: part/models.py:2645
+#: part/models.py:2653
 msgid "Level"
 msgstr ""
 
-#: part/models.py:2646
+#: part/models.py:2654
 msgid "BOM level"
 msgstr ""
 
-#: part/models.py:2707
+#: part/models.py:2715
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2715
+#: part/models.py:2723
 msgid "Sub part"
 msgstr ""
 
-#: part/models.py:2716
+#: part/models.py:2724
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2722
+#: part/models.py:2730
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2724 part/templates/part/upload_bom.html:58
+#: part/models.py:2732 part/templates/part/upload_bom.html:58
 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863
 #: templates/js/translated/table_filters.js:92
 msgid "Optional"
 msgstr "可选项"
 
-#: part/models.py:2724
+#: part/models.py:2732
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2727 part/templates/part/upload_bom.html:55
+#: part/models.py:2735 part/templates/part/upload_bom.html:55
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2728
+#: part/models.py:2736
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2731
+#: part/models.py:2739
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2734
+#: part/models.py:2742
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2736
+#: part/models.py:2744
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2740 part/templates/part/upload_bom.html:57
+#: part/models.py:2748 part/templates/part/upload_bom.html:57
 #: templates/js/translated/bom.js:880
 #: templates/js/translated/table_filters.js:68
 #: templates/js/translated/table_filters.js:88
 msgid "Inherited"
 msgstr "继承项"
 
-#: part/models.py:2741
+#: part/models.py:2749
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2746 part/templates/part/upload_bom.html:56
+#: part/models.py:2754 part/templates/part/upload_bom.html:56
 #: templates/js/translated/bom.js:872
 msgid "Allow Variants"
 msgstr ""
 
-#: part/models.py:2747
+#: part/models.py:2755
 msgid "Stock items for variant parts can be used for this BOM item"
 msgstr ""
 
-#: part/models.py:2832 stock/models.py:446
+#: part/models.py:2840 stock/models.py:461
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2841 part/models.py:2843
+#: part/models.py:2849 part/models.py:2851
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2972
+#: part/models.py:2980
 msgid "BOM Item Substitute"
 msgstr ""
 
-#: part/models.py:2994
+#: part/models.py:3002
 msgid "Substitute part cannot be the same as the master part"
 msgstr ""
 
-#: part/models.py:3006
+#: part/models.py:3014
 msgid "Parent BOM item"
 msgstr ""
 
-#: part/models.py:3014
+#: part/models.py:3022
 msgid "Substitute part"
 msgstr ""
 
-#: part/models.py:3025
+#: part/models.py:3033
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:3029
+#: part/models.py:3037
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:3061
+#: part/models.py:3069
 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
@@ -4532,7 +4562,7 @@ msgstr ""
 msgid "The BOM for <em>%(part)s</em> has not been validated."
 msgstr ""
 
-#: part/templates/part/bom.html:30 part/templates/part/detail.html:274
+#: part/templates/part/bom.html:30 part/templates/part/detail.html:289
 msgid "BOM actions"
 msgstr ""
 
@@ -4641,46 +4671,43 @@ msgstr ""
 msgid "Part created successfully"
 msgstr ""
 
-#: part/templates/part/category_delete.html:5
-msgid "Are you sure you want to delete category"
-msgstr "您确定要删除此类别吗?"
+#: part/templates/part/category_delete.html:7
+msgid "Are you sure you want to delete this part category?"
+msgstr ""
 
-#: part/templates/part/category_delete.html:8
+#: part/templates/part/category_delete.html:12
 #, python-format
-msgid "This category contains %(count)s child categories"
-msgstr "此类别包含 %(count)s 个子类别"
+msgid "This category contains %(n)s child categories"
+msgstr ""
 
-#: part/templates/part/category_delete.html:9
-msgid "If this category is deleted, these child categories will be moved to the"
-msgstr "如果删除此类别,则这些子类别将被移动到以下位置:"
+#: part/templates/part/category_delete.html:14
+#, python-format
+msgid "If this category is deleted, these child categories will be moved to %(category)s"
+msgstr ""
 
-#: part/templates/part/category_delete.html:11
-msgid "category"
-msgstr "类别"
+#: part/templates/part/category_delete.html:16
+msgid "If this category is deleted, these child categories will be moved to the top level part category"
+msgstr ""
 
-#: part/templates/part/category_delete.html:13
-msgid "top level Parts category"
-msgstr "顶层商品类别"
+#: part/templates/part/category_delete.html:23
+#, python-format
+msgid "This category contains %(n)s parts"
+msgstr ""
 
 #: part/templates/part/category_delete.html:25
 #, python-format
-msgid "This category contains %(count)s parts"
-msgstr "此类别包含 %(count)s 个商品"
+msgid "If this category is deleted, these parts will be moved to %(category)s"
+msgstr ""
 
 #: part/templates/part/category_delete.html:27
-#, python-format
-msgid "If this category is deleted, these parts will be moved to the parent category %(path)s"
-msgstr "如果删除此类别,这些商品将移至其父类别 %(path)s"
-
-#: part/templates/part/category_delete.html:29
-msgid "If this category is deleted, these parts will be moved to the top-level category Teile"
+msgid "If this category is deleted, these parts will be moved to the top level part category"
 msgstr ""
 
 #: part/templates/part/category_sidebar.html:13
 msgid "Import Parts"
 msgstr ""
 
-#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348
+#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349
 msgid "Duplicate Part"
 msgstr "复制部件"
 
@@ -4708,150 +4735,150 @@ msgstr ""
 msgid "Part Stock"
 msgstr "商品库存"
 
-#: part/templates/part/detail.html:38
+#: part/templates/part/detail.html:53
 msgid "Part Stock Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:55
+#: part/templates/part/detail.html:70
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/detail.html:60
+#: part/templates/part/detail.html:75
 msgid "Add Test Template"
 msgstr ""
 
-#: part/templates/part/detail.html:117
+#: part/templates/part/detail.html:132
 msgid "Sales Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:163
+#: part/templates/part/detail.html:178
 msgid "Part Variants"
 msgstr ""
 
-#: part/templates/part/detail.html:167
+#: part/templates/part/detail.html:182
 msgid "Create new variant"
 msgstr ""
 
-#: part/templates/part/detail.html:168
+#: part/templates/part/detail.html:183
 msgid "New Variant"
 msgstr ""
 
-#: part/templates/part/detail.html:195
+#: part/templates/part/detail.html:210
 msgid "Add new parameter"
 msgstr ""
 
-#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52
+#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/detail.html:236 part/templates/part/detail.html:237
+#: part/templates/part/detail.html:251 part/templates/part/detail.html:252
 msgid "Add Related"
 msgstr ""
 
-#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18
+#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18
 msgid "Bill of Materials"
 msgstr ""
 
-#: part/templates/part/detail.html:262
+#: part/templates/part/detail.html:277
 msgid "Export actions"
 msgstr ""
 
-#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283
+#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283
 msgid "Export BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:268
+#: part/templates/part/detail.html:283
 msgid "Print BOM Report"
 msgstr ""
 
-#: part/templates/part/detail.html:278
+#: part/templates/part/detail.html:293
 msgid "Upload BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:279 templates/js/translated/part.js:272
+#: part/templates/part/detail.html:294 templates/js/translated/part.js:273
 msgid "Copy BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:280
+#: part/templates/part/detail.html:295
 msgid "Validate BOM"
 msgstr ""
 
-#: part/templates/part/detail.html:285
+#: part/templates/part/detail.html:300
 msgid "New BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:286
+#: part/templates/part/detail.html:301
 msgid "Add BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:299
+#: part/templates/part/detail.html:314
 msgid "Assemblies"
 msgstr ""
 
-#: part/templates/part/detail.html:316
+#: part/templates/part/detail.html:331
 msgid "Part Builds"
 msgstr ""
 
-#: part/templates/part/detail.html:341
+#: part/templates/part/detail.html:356
 msgid "Build Order Allocations"
 msgstr ""
 
-#: part/templates/part/detail.html:356
+#: part/templates/part/detail.html:371
 msgid "Part Suppliers"
 msgstr "商品供应商"
 
-#: part/templates/part/detail.html:384
+#: part/templates/part/detail.html:399
 msgid "Part Manufacturers"
 msgstr "商品制造商"
 
-#: part/templates/part/detail.html:400
+#: part/templates/part/detail.html:415
 msgid "Delete manufacturer parts"
 msgstr "删除制造商商品"
 
-#: part/templates/part/detail.html:582
+#: part/templates/part/detail.html:602
 msgid "Delete selected BOM items?"
 msgstr ""
 
-#: part/templates/part/detail.html:583
+#: part/templates/part/detail.html:603
 msgid "All selected BOM items will be deleted"
 msgstr ""
 
-#: part/templates/part/detail.html:632
+#: part/templates/part/detail.html:652
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/templates/part/detail.html:689
+#: part/templates/part/detail.html:709
 msgid "Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:697
+#: part/templates/part/detail.html:717
 msgid "Add Related Part"
 msgstr ""
 
-#: part/templates/part/detail.html:794
+#: part/templates/part/detail.html:814
 msgid "Add Test Result Template"
 msgstr ""
 
-#: part/templates/part/detail.html:844
+#: part/templates/part/detail.html:864
 msgid "Edit Part Notes"
 msgstr "编辑商品注释"
 
-#: part/templates/part/detail.html:957
+#: part/templates/part/detail.html:977
 #, python-format
 msgid "Purchase Unit Price - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:969
+#: part/templates/part/detail.html:989
 #, python-format
 msgid "Unit Price-Cost Difference - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:981
+#: part/templates/part/detail.html:1001
 #, python-format
 msgid "Supplier Unit Cost - %(currency)s"
 msgstr ""
 
-#: part/templates/part/detail.html:1070
+#: part/templates/part/detail.html:1090
 #, python-format
 msgid "Unit Price - %(currency)s"
 msgstr ""
@@ -4996,7 +5023,7 @@ msgstr "商品是虚拟的(不是实体零件)"
 #: templates/js/translated/company.js:508
 #: templates/js/translated/company.js:765
 #: templates/js/translated/model_renderers.js:175
-#: templates/js/translated/part.js:534 templates/js/translated/part.js:611
+#: templates/js/translated/part.js:535 templates/js/translated/part.js:612
 msgid "Inactive"
 msgstr ""
 
@@ -5031,8 +5058,8 @@ msgstr ""
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155
-#: templates/js/translated/part.js:1328
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156
+#: templates/js/translated/part.js:1329
 msgid "Building"
 msgstr ""
 
@@ -5131,7 +5158,11 @@ msgstr ""
 msgid "Allocations"
 msgstr ""
 
-#: part/templates/part/part_sidebar.html:48
+#: part/templates/part/part_sidebar.html:49
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:53
 msgid "Test Templates"
 msgstr ""
 
@@ -5247,8 +5278,8 @@ msgid "Set category for the following parts"
 msgstr "为以下商品设置类别"
 
 #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811
-#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145
-#: templates/js/translated/part.js:1332
+#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146
+#: templates/js/translated/part.js:1333
 msgid "No Stock"
 msgstr ""
 
@@ -5363,7 +5394,7 @@ msgstr ""
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:1026 templates/js/translated/part.js:315
+#: part/views.py:1026 templates/js/translated/part.js:316
 msgid "Edit Part Category"
 msgstr "编辑商品类别"
 
@@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:608 stock/templates/stock/item_base.html:151
+#: stock/models.py:623 stock/templates/stock/item_base.html:151
 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296
+#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308
 #: templates/js/translated/model_renderers.js:95
 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150
-#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422
+#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432
 msgid "Serial Number"
 msgstr "序列号"
 
@@ -5615,19 +5646,19 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:2104
+#: stock/models.py:2119
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:2110
+#: stock/models.py:2125
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:97
 #: templates/InvenTree/settings/plugin.html:50
 #: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613
+#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623
 msgid "Date"
 msgstr ""
 
@@ -5645,8 +5676,8 @@ msgid "Installed Items"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712
-#: templates/js/translated/stock.js:2866
+#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722
+#: templates/js/translated/stock.js:2876
 msgid "Serial"
 msgstr ""
 
@@ -5662,9 +5693,9 @@ msgstr ""
 msgid "Serial numbers cannot be supplied for a non-trackable part"
 msgstr ""
 
-#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665
+#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680
 #: stock/templates/stock/item_base.html:188
-#: templates/js/translated/stock.js:1791
+#: templates/js/translated/stock.js:1801
 msgid "Expiry Date"
 msgstr ""
 
@@ -5704,228 +5735,228 @@ msgstr ""
 msgid "Confirm removal of installed stock items"
 msgstr ""
 
-#: stock/models.py:62 stock/models.py:702
+#: stock/models.py:91 stock/models.py:717
 #: stock/templates/stock/item_base.html:402
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:63 stock/models.py:703
+#: stock/models.py:92 stock/models.py:718
 msgid "Select Owner"
 msgstr ""
 
-#: stock/models.py:427
+#: stock/models.py:442
 msgid "StockItem with this serial number already exists"
 msgstr ""
 
-#: stock/models.py:463
+#: stock/models.py:478
 #, python-brace-format
 msgid "Part type ('{pf}') must be {pe}"
 msgstr "商品类型 ('{pf}') 必须是 {pe}"
 
-#: stock/models.py:473 stock/models.py:482
+#: stock/models.py:488 stock/models.py:497
 msgid "Quantity must be 1 for item with a serial number"
 msgstr ""
 
-#: stock/models.py:474
+#: stock/models.py:489
 msgid "Serial number cannot be set if quantity greater than 1"
 msgstr ""
 
-#: stock/models.py:496
+#: stock/models.py:511
 msgid "Item cannot belong to itself"
 msgstr ""
 
-#: stock/models.py:502
+#: stock/models.py:517
 msgid "Item must have a build reference if is_building=True"
 msgstr ""
 
-#: stock/models.py:509
+#: stock/models.py:524
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:552
+#: stock/models.py:567
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:561
+#: stock/models.py:576
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:569
+#: stock/models.py:584
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
-#: stock/models.py:575 stock/templates/stock/location.html:16
+#: stock/models.py:590 stock/templates/stock/location.html:16
 #: stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr "仓储地点"
 
-#: stock/models.py:578
+#: stock/models.py:593
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:585
+#: stock/models.py:600
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:591 stock/templates/stock/item_base.html:277
+#: stock/models.py:606 stock/templates/stock/item_base.html:277
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:594
+#: stock/models.py:609
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:610
+#: stock/models.py:625
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:624
+#: stock/models.py:639
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:628
+#: stock/models.py:643
 msgid "Stock Quantity"
 msgstr ""
 
-#: stock/models.py:637
+#: stock/models.py:652
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:639
+#: stock/models.py:654
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:650
+#: stock/models.py:665
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:653
+#: stock/models.py:668
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:659
+#: stock/models.py:674
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:666
+#: stock/models.py:681
 msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:679
+#: stock/models.py:694
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:689 stock/templates/stock/item.html:121
+#: stock/models.py:704 stock/templates/stock/item.html:121
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:698
+#: stock/models.py:713
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:1223
+#: stock/models.py:1238
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:1229
+#: stock/models.py:1244
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:1235
+#: stock/models.py:1250
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:1238
+#: stock/models.py:1253
 msgid "Serial numbers must be a list of integers"
 msgstr ""
 
-#: stock/models.py:1241
+#: stock/models.py:1256
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:1248
+#: stock/models.py:1263
 #, python-brace-format
 msgid "Serial numbers already exist: {exists}"
 msgstr ""
 
-#: stock/models.py:1319
+#: stock/models.py:1334
 msgid "Stock item has been assigned to a sales order"
 msgstr ""
 
-#: stock/models.py:1322
+#: stock/models.py:1337
 msgid "Stock item is installed in another item"
 msgstr ""
 
-#: stock/models.py:1325
+#: stock/models.py:1340
 msgid "Stock item contains other items"
 msgstr ""
 
-#: stock/models.py:1328
+#: stock/models.py:1343
 msgid "Stock item has been assigned to a customer"
 msgstr ""
 
-#: stock/models.py:1331
+#: stock/models.py:1346
 msgid "Stock item is currently in production"
 msgstr ""
 
-#: stock/models.py:1334
+#: stock/models.py:1349
 msgid "Serialized stock cannot be merged"
 msgstr ""
 
-#: stock/models.py:1341 stock/serializers.py:832
+#: stock/models.py:1356 stock/serializers.py:832
 msgid "Duplicate stock items"
 msgstr ""
 
-#: stock/models.py:1345
+#: stock/models.py:1360
 msgid "Stock items must refer to the same part"
 msgstr ""
 
-#: stock/models.py:1349
+#: stock/models.py:1364
 msgid "Stock items must refer to the same supplier part"
 msgstr ""
 
-#: stock/models.py:1353
+#: stock/models.py:1368
 msgid "Stock status codes must match"
 msgstr ""
 
-#: stock/models.py:1525
+#: stock/models.py:1540
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:2024
+#: stock/models.py:2039
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:2081
+#: stock/models.py:2096
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:2087
+#: stock/models.py:2102
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:2105
+#: stock/models.py:2120
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:2111
+#: stock/models.py:2126
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:2117
+#: stock/models.py:2132
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:2124
+#: stock/models.py:2139
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:2130
+#: stock/models.py:2145
 msgid "Test notes"
 msgstr ""
 
@@ -6079,11 +6110,11 @@ msgstr ""
 msgid "Installed Stock Items"
 msgstr ""
 
-#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975
+#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985
 msgid "Install Stock Item"
 msgstr ""
 
-#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435
+#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445
 msgid "Add Test Result"
 msgstr ""
 
@@ -6208,7 +6239,7 @@ msgid "Stale"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:201
-#: templates/js/translated/stock.js:1807
+#: templates/js/translated/stock.js:1817
 msgid "Last Updated"
 msgstr ""
 
@@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua
 msgstr ""
 
 #: stock/templates/stock/item_base.html:296
-#: templates/js/translated/build.js:1318
+#: templates/js/translated/build.js:1330
 msgid "No location set"
 msgstr "未设置仓储地点"
 
@@ -6274,7 +6305,7 @@ msgstr ""
 msgid "Read only"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:483
+#: stock/templates/stock/item_base.html:481
 msgid "Edit Stock Status"
 msgstr ""
 
@@ -6355,10 +6386,38 @@ msgstr "打印操作"
 msgid "Print labels"
 msgstr "打印标签"
 
-#: stock/templates/stock/location_delete.html:7
+#: stock/templates/stock/location_delete.html:8
 msgid "Are you sure you want to delete this stock location?"
 msgstr "确实要删除此仓储地点吗?"
 
+#: stock/templates/stock/location_delete.html:13
+#, python-format
+msgid "This location contains %(n)s child locations"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:15
+#, python-format
+msgid "If this location is deleted, these child locations will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:17
+msgid "If this location is deleted, these child locations will be moved to the top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:25
+#, python-format
+msgid "This location contains %(n)s stock items"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:27
+#, python-format
+msgid "If this location is deleted, these stock items will be moved to %(location)s"
+msgstr ""
+
+#: stock/templates/stock/location_delete.html:29
+msgid "If this location is deleted, these stock items will be moved to the top level stock location"
+msgstr ""
+
 #: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
@@ -6440,7 +6499,7 @@ msgstr ""
 msgid "Uninstall Stock Items"
 msgstr ""
 
-#: stock/views.py:479 templates/js/translated/stock.js:1030
+#: stock/views.py:479 templates/js/translated/stock.js:1040
 msgid "Confirm stock adjustment"
 msgstr ""
 
@@ -6448,7 +6507,7 @@ msgstr ""
 msgid "Uninstalled stock items"
 msgstr ""
 
-#: stock/views.py:512 templates/js/translated/stock.js:331
+#: stock/views.py:512 templates/js/translated/stock.js:341
 msgid "Edit Stock Item"
 msgstr ""
 
@@ -6460,7 +6519,7 @@ msgstr "新建仓储地点"
 msgid "Create new Stock Item"
 msgstr ""
 
-#: stock/views.py:905 templates/js/translated/stock.js:311
+#: stock/views.py:905 templates/js/translated/stock.js:321
 msgid "Duplicate Stock Item"
 msgstr ""
 
@@ -7057,60 +7116,60 @@ msgstr ""
 msgid "Do you really want to remove the selected email address?"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:26
+#: templates/InvenTree/settings/user_display.html:27
 msgid "Theme Settings"
 msgstr "主题设置"
 
-#: templates/InvenTree/settings/user_display.html:36
+#: templates/InvenTree/settings/user_display.html:37
 msgid "Select theme"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:47
+#: templates/InvenTree/settings/user_display.html:48
 msgid "Set Theme"
 msgstr "设置主题"
 
-#: templates/InvenTree/settings/user_display.html:55
+#: templates/InvenTree/settings/user_display.html:56
 msgid "Language Settings"
 msgstr "语言设置"
 
-#: templates/InvenTree/settings/user_display.html:64
+#: templates/InvenTree/settings/user_display.html:65
 msgid "Select language"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:80
+#: templates/InvenTree/settings/user_display.html:81
 #, python-format
 msgid "%(lang_translated)s%% translated"
 msgstr "%(lang_translated)s%% 已翻译"
 
-#: templates/InvenTree/settings/user_display.html:82
+#: templates/InvenTree/settings/user_display.html:83
 msgid "No translations available"
 msgstr "无可用翻译"
 
-#: templates/InvenTree/settings/user_display.html:89
+#: templates/InvenTree/settings/user_display.html:90
 msgid "Set Language"
 msgstr "设置语言"
 
-#: templates/InvenTree/settings/user_display.html:92
+#: templates/InvenTree/settings/user_display.html:93
 msgid "Some languages are not complete"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:94
+#: templates/InvenTree/settings/user_display.html:95
 msgid "Show only sufficent"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "and hidden."
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:96
+#: templates/InvenTree/settings/user_display.html:97
 msgid "Show them too"
 msgstr ""
 
-#: templates/InvenTree/settings/user_display.html:102
+#: templates/InvenTree/settings/user_display.html:103
 msgid "Help the translation efforts!"
 msgstr "帮助翻译工作!"
 
-#: templates/InvenTree/settings/user_display.html:103
+#: templates/InvenTree/settings/user_display.html:104
 #, python-format
 msgid "Native language translation of the InvenTree web application is <a href=\"%(link)s\">community contributed via crowdin</a>. Contributions are welcomed and encouraged."
 msgstr ""
@@ -7414,8 +7473,8 @@ msgstr ""
 
 #: templates/email/build_order_required_stock.html:19
 #: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412
-#: templates/js/translated/build.js:2110
+#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424
+#: templates/js/translated/build.js:2125
 #: templates/js/translated/table_filters.js:178
 msgid "Available"
 msgstr "空闲"
@@ -7607,7 +7666,7 @@ msgstr ""
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992
 msgid "Remove stock item"
 msgstr ""
 
@@ -7747,7 +7806,7 @@ msgstr ""
 msgid "Substitutes Available"
 msgstr ""
 
-#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394
+#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406
 msgid "Variant stock allowed"
 msgstr ""
 
@@ -7799,7 +7858,7 @@ msgstr ""
 msgid "Are you sure you want to delete this BOM item?"
 msgstr ""
 
-#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378
+#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390
 msgid "Required Part"
 msgstr ""
 
@@ -7913,137 +7972,141 @@ msgstr "未指定仓储地点"
 msgid "No active build outputs found"
 msgstr ""
 
-#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121
+#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136
 #: templates/js/translated/order.js:2187
 msgid "Edit stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122
+#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137
 #: templates/js/translated/order.js:2188
 msgid "Delete stock allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1355
+#: templates/js/translated/build.js:1367
 msgid "Edit Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1365
+#: templates/js/translated/build.js:1377
 msgid "Remove Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1390
+#: templates/js/translated/build.js:1402
 msgid "Substitute parts available"
 msgstr ""
 
-#: templates/js/translated/build.js:1407
+#: templates/js/translated/build.js:1419
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667
-#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454
+#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681
+#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454
 msgid "Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534
+#: templates/js/translated/build.js:1443
+msgid "loading"
+msgstr ""
+
+#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1477 templates/stock_table.html:50
+#: templates/js/translated/build.js:1491 templates/stock_table.html:50
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527
+#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527
 msgid "Allocate stock"
 msgstr ""
 
-#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134
+#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134
 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225
 msgid "Select Parts"
 msgstr "选择商品"
 
-#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756
+#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756
 msgid "You must select at least one part to allocate"
 msgstr ""
 
-#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704
+#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704
 msgid "Specify stock allocation quantity"
 msgstr ""
 
-#: templates/js/translated/build.js:1640
+#: templates/js/translated/build.js:1654
 msgid "All Parts Allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1641
+#: templates/js/translated/build.js:1655
 msgid "All selected parts have been fully allocated"
 msgstr ""
 
-#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770
+#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770
 msgid "Select source location (leave blank to take from all locations)"
 msgstr ""
 
-#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805
+#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805
 msgid "Confirm stock allocation"
 msgstr "确认库存分配"
 
-#: templates/js/translated/build.js:1685
+#: templates/js/translated/build.js:1699
 msgid "Allocate Stock Items to Build Order"
 msgstr ""
 
-#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818
+#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818
 msgid "No matching stock locations"
 msgstr ""
 
-#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895
+#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895
 msgid "No matching stock items"
 msgstr ""
 
-#: templates/js/translated/build.js:1865
+#: templates/js/translated/build.js:1879
 msgid "Automatic Stock Allocation"
 msgstr ""
 
-#: templates/js/translated/build.js:1866
+#: templates/js/translated/build.js:1880
 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
 msgstr ""
 
-#: templates/js/translated/build.js:1868
+#: templates/js/translated/build.js:1882
 msgid "If a location is specifed, stock will only be allocated from that location"
 msgstr ""
 
-#: templates/js/translated/build.js:1869
+#: templates/js/translated/build.js:1883
 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
 msgstr ""
 
-#: templates/js/translated/build.js:1870
+#: templates/js/translated/build.js:1884
 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:1890
+#: templates/js/translated/build.js:1905
 msgid "Allocate Stock Items"
 msgstr ""
 
-#: templates/js/translated/build.js:1928
+#: templates/js/translated/build.js:1943
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236
-#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599
-#: templates/js/translated/stock.js:2567
+#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237
+#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609
+#: templates/js/translated/stock.js:2577
 msgid "Select"
 msgstr ""
 
-#: templates/js/translated/build.js:1965
+#: templates/js/translated/build.js:1980
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779
+#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789
 msgid "No user information"
 msgstr "没有用户信息"
 
-#: templates/js/translated/build.js:2041
+#: templates/js/translated/build.js:2056
 msgid "No information"
 msgstr ""
 
-#: templates/js/translated/build.js:2098
+#: templates/js/translated/build.js:2113
 msgid "No parts allocated for"
 msgstr ""
 
@@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found"
 msgstr ""
 
 #: templates/js/translated/company.js:500
-#: templates/js/translated/company.js:757 templates/js/translated/part.js:518
-#: templates/js/translated/part.js:603
+#: templates/js/translated/company.js:757 templates/js/translated/part.js:519
+#: templates/js/translated/part.js:604
 msgid "Template part"
 msgstr ""
 
 #: templates/js/translated/company.js:504
-#: templates/js/translated/company.js:761 templates/js/translated/part.js:522
-#: templates/js/translated/part.js:607
+#: templates/js/translated/company.js:761 templates/js/translated/part.js:523
+#: templates/js/translated/part.js:608
 msgid "Assembled part"
 msgstr ""
 
-#: templates/js/translated/company.js:631 templates/js/translated/part.js:697
+#: templates/js/translated/company.js:631 templates/js/translated/part.js:698
 msgid "No parameters found"
 msgstr "无指定参数"
 
-#: templates/js/translated/company.js:668 templates/js/translated/part.js:739
+#: templates/js/translated/company.js:668 templates/js/translated/part.js:740
 msgid "Edit parameter"
 msgstr "编辑参数"
 
-#: templates/js/translated/company.js:669 templates/js/translated/part.js:740
+#: templates/js/translated/company.js:669 templates/js/translated/part.js:741
 msgid "Delete parameter"
 msgstr "删除参数"
 
-#: templates/js/translated/company.js:688 templates/js/translated/part.js:757
+#: templates/js/translated/company.js:688 templates/js/translated/part.js:758
 msgid "Edit Parameter"
 msgstr "编辑参数"
 
-#: templates/js/translated/company.js:699 templates/js/translated/part.js:769
+#: templates/js/translated/company.js:699 templates/js/translated/part.js:770
 msgid "Delete Parameter"
 msgstr "删除参数"
 
@@ -8244,7 +8307,7 @@ msgid "NO"
 msgstr ""
 
 #: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:1006
+#: templates/js/translated/stock.js:1016
 msgid "Select Stock Items"
 msgstr "选择库存项"
 
@@ -8441,7 +8504,7 @@ msgstr ""
 msgid "Quantity to receive"
 msgstr ""
 
-#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219
+#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229
 msgid "Stock Status"
 msgstr ""
 
@@ -8465,7 +8528,7 @@ msgstr ""
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: templates/js/translated/order.js:925 templates/js/translated/part.js:810
+#: templates/js/translated/order.js:925 templates/js/translated/part.js:811
 msgid "No purchase orders found"
 msgstr ""
 
@@ -8494,7 +8557,7 @@ msgid "Total"
 msgstr ""
 
 #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368
-#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075
+#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193
 msgid "Unit Price"
 msgstr "单价"
 
@@ -8503,11 +8566,11 @@ msgid "Total Price"
 msgstr ""
 
 #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426
-#: templates/js/translated/part.js:919
+#: templates/js/translated/part.js:920
 msgid "This line item is overdue"
 msgstr ""
 
-#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965
+#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966
 msgid "Receive line item"
 msgstr ""
 
@@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation"
 msgstr ""
 
 #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253
-#: templates/js/translated/stock.js:1515
+#: templates/js/translated/stock.js:1525
 msgid "Shipped to customer"
 msgstr ""
 
@@ -8628,237 +8691,245 @@ msgstr ""
 msgid "No matching line items"
 msgstr ""
 
-#: templates/js/translated/part.js:54
+#: templates/js/translated/part.js:55
 msgid "Part Attributes"
 msgstr "商品属性"
 
-#: templates/js/translated/part.js:58
+#: templates/js/translated/part.js:59
 msgid "Part Creation Options"
 msgstr "商品创建选项"
 
-#: templates/js/translated/part.js:62
+#: templates/js/translated/part.js:63
 msgid "Part Duplication Options"
 msgstr "商品重复选项"
 
-#: templates/js/translated/part.js:66
+#: templates/js/translated/part.js:67
 msgid "Supplier Options"
 msgstr ""
 
-#: templates/js/translated/part.js:80
+#: templates/js/translated/part.js:81
 msgid "Add Part Category"
 msgstr "增加商品类别"
 
-#: templates/js/translated/part.js:164
+#: templates/js/translated/part.js:165
 msgid "Create Initial Stock"
 msgstr ""
 
-#: templates/js/translated/part.js:165
+#: templates/js/translated/part.js:166
 msgid "Create an initial stock item for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:172
+#: templates/js/translated/part.js:173
 msgid "Initial Stock Quantity"
 msgstr ""
 
-#: templates/js/translated/part.js:173
+#: templates/js/translated/part.js:174
 msgid "Specify initial stock quantity for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:180
+#: templates/js/translated/part.js:181
 msgid "Select destination stock location"
 msgstr ""
 
-#: templates/js/translated/part.js:198
+#: templates/js/translated/part.js:199
 msgid "Copy Category Parameters"
 msgstr "复制类别参数"
 
-#: templates/js/translated/part.js:199
+#: templates/js/translated/part.js:200
 msgid "Copy parameter templates from selected part category"
 msgstr ""
 
-#: templates/js/translated/part.js:207
+#: templates/js/translated/part.js:208
 msgid "Add Supplier Data"
 msgstr ""
 
-#: templates/js/translated/part.js:208
+#: templates/js/translated/part.js:209
 msgid "Create initial supplier data for this part"
 msgstr ""
 
-#: templates/js/translated/part.js:264
+#: templates/js/translated/part.js:265
 msgid "Copy Image"
 msgstr ""
 
-#: templates/js/translated/part.js:265
+#: templates/js/translated/part.js:266
 msgid "Copy image from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:273
+#: templates/js/translated/part.js:274
 msgid "Copy bill of materials from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:280
+#: templates/js/translated/part.js:281
 msgid "Copy Parameters"
 msgstr ""
 
-#: templates/js/translated/part.js:281
+#: templates/js/translated/part.js:282
 msgid "Copy parameter data from original part"
 msgstr ""
 
-#: templates/js/translated/part.js:294
+#: templates/js/translated/part.js:295
 msgid "Parent part category"
 msgstr ""
 
-#: templates/js/translated/part.js:338
+#: templates/js/translated/part.js:339
 msgid "Edit Part"
 msgstr "编辑商品"
 
-#: templates/js/translated/part.js:340
+#: templates/js/translated/part.js:341
 msgid "Part edited"
 msgstr ""
 
-#: templates/js/translated/part.js:351
+#: templates/js/translated/part.js:352
 msgid "Create Part Variant"
 msgstr ""
 
-#: templates/js/translated/part.js:418
+#: templates/js/translated/part.js:419
 msgid "You are subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:420
+#: templates/js/translated/part.js:421
 msgid "You have subscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:425
+#: templates/js/translated/part.js:426
 msgid "Subscribe to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:427
+#: templates/js/translated/part.js:428
 msgid "You have unsubscribed to notifications for this item"
 msgstr ""
 
-#: templates/js/translated/part.js:444
+#: templates/js/translated/part.js:445
 msgid "Validating the BOM will mark each line item as valid"
 msgstr ""
 
-#: templates/js/translated/part.js:454
+#: templates/js/translated/part.js:455
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:457
+#: templates/js/translated/part.js:458
 msgid "Validated Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:482
+#: templates/js/translated/part.js:483
 msgid "Copy Bill of Materials"
 msgstr ""
 
-#: templates/js/translated/part.js:510 templates/js/translated/part.js:595
+#: templates/js/translated/part.js:511 templates/js/translated/part.js:596
 msgid "Trackable part"
 msgstr "可追溯商品"
 
-#: templates/js/translated/part.js:514 templates/js/translated/part.js:599
+#: templates/js/translated/part.js:515 templates/js/translated/part.js:600
 msgid "Virtual part"
 msgstr "虚拟商品"
 
-#: templates/js/translated/part.js:526
+#: templates/js/translated/part.js:527
 msgid "Subscribed part"
 msgstr ""
 
-#: templates/js/translated/part.js:530
+#: templates/js/translated/part.js:531
 msgid "Salable part"
 msgstr "可销售商品"
 
-#: templates/js/translated/part.js:645
+#: templates/js/translated/part.js:646
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/translated/part.js:1035
+#: templates/js/translated/part.js:1036
 msgid "Delete part relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1059
+#: templates/js/translated/part.js:1060
 msgid "Delete Part Relationship"
 msgstr ""
 
-#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386
+#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/translated/part.js:1296
+#: templates/js/translated/part.js:1297
 msgid "No category"
 msgstr "没有分类"
 
-#: templates/js/translated/part.js:1319
+#: templates/js/translated/part.js:1320
 #: templates/js/translated/table_filters.js:425
 msgid "Low stock"
 msgstr ""
 
-#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582
-#: templates/js/translated/stock.js:2528
+#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583
+#: templates/js/translated/stock.js:2538
 msgid "Display as list"
 msgstr ""
 
-#: templates/js/translated/part.js:1426
+#: templates/js/translated/part.js:1427
 msgid "Display as grid"
 msgstr ""
 
-#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547
+#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557
 msgid "Display as tree"
 msgstr ""
 
-#: templates/js/translated/part.js:1665
+#: templates/js/translated/part.js:1666
 msgid "Subscribed category"
 msgstr ""
 
-#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591
+#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601
 msgid "Path"
 msgstr ""
 
-#: templates/js/translated/part.js:1723
+#: templates/js/translated/part.js:1724
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226
+#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227
-#: templates/js/translated/stock.js:1473
+#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237
+#: templates/js/translated/stock.js:1483
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/translated/part.js:1781
+#: templates/js/translated/part.js:1782
 msgid "This test is defined for a parent part"
 msgstr ""
 
-#: templates/js/translated/part.js:1803
+#: templates/js/translated/part.js:1804
 msgid "Edit Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1817
+#: templates/js/translated/part.js:1818
 msgid "Delete Test Result Template"
 msgstr ""
 
-#: templates/js/translated/part.js:1842
+#: templates/js/translated/part.js:1843
 #, python-brace-format
 msgid "No ${human_name} information found"
 msgstr ""
 
-#: templates/js/translated/part.js:1897
+#: templates/js/translated/part.js:1898
 #, python-brace-format
 msgid "Edit ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1898
+#: templates/js/translated/part.js:1899
 #, python-brace-format
 msgid "Delete ${human_name}"
 msgstr ""
 
-#: templates/js/translated/part.js:1999
+#: templates/js/translated/part.js:2004
+msgid "Current Stock"
+msgstr ""
+
+#: templates/js/translated/part.js:2047
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:2117
 msgid "Single Price"
 msgstr ""
 
-#: templates/js/translated/part.js:2018
+#: templates/js/translated/part.js:2136
 msgid "Single Price Difference"
 msgstr ""
 
@@ -8960,328 +9031,332 @@ msgstr ""
 msgid "Enter serial numbers for new stock (or leave blank)"
 msgstr ""
 
-#: templates/js/translated/stock.js:381
+#: templates/js/translated/stock.js:301
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:391
 msgid "Created new stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:394
+#: templates/js/translated/stock.js:404
 msgid "Created multiple stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:419
+#: templates/js/translated/stock.js:429
 msgid "Find Serial Number"
 msgstr ""
 
-#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424
+#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434
 msgid "Enter serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:440
+#: templates/js/translated/stock.js:450
 msgid "Enter a serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:460
+#: templates/js/translated/stock.js:470
 msgid "No matching serial number"
 msgstr ""
 
-#: templates/js/translated/stock.js:469
+#: templates/js/translated/stock.js:479
 msgid "More than one matching result found"
 msgstr ""
 
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:602
 msgid "Confirm stock assignment"
 msgstr ""
 
-#: templates/js/translated/stock.js:593
+#: templates/js/translated/stock.js:603
 msgid "Assign Stock to Customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:670
+#: templates/js/translated/stock.js:680
 msgid "Warning: Merge operation cannot be reversed"
 msgstr ""
 
-#: templates/js/translated/stock.js:671
+#: templates/js/translated/stock.js:681
 msgid "Some information will be lost when merging stock items"
 msgstr ""
 
-#: templates/js/translated/stock.js:673
+#: templates/js/translated/stock.js:683
 msgid "Stock transaction history will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:674
+#: templates/js/translated/stock.js:684
 msgid "Supplier part information will be deleted for merged items"
 msgstr ""
 
-#: templates/js/translated/stock.js:760
+#: templates/js/translated/stock.js:770
 msgid "Confirm stock item merge"
 msgstr ""
 
-#: templates/js/translated/stock.js:761
+#: templates/js/translated/stock.js:771
 msgid "Merge Stock Items"
 msgstr ""
 
-#: templates/js/translated/stock.js:856
+#: templates/js/translated/stock.js:866
 msgid "Transfer Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:857
+#: templates/js/translated/stock.js:867
 msgid "Move"
 msgstr ""
 
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:873
 msgid "Count Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:874
 msgid "Count"
 msgstr ""
 
-#: templates/js/translated/stock.js:868
+#: templates/js/translated/stock.js:878
 msgid "Remove Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:869
+#: templates/js/translated/stock.js:879
 msgid "Take"
 msgstr ""
 
-#: templates/js/translated/stock.js:873
+#: templates/js/translated/stock.js:883
 msgid "Add Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:874 users/models.py:213
+#: templates/js/translated/stock.js:884 users/models.py:213
 msgid "Add"
 msgstr "添加"
 
-#: templates/js/translated/stock.js:878
+#: templates/js/translated/stock.js:888
 msgid "Delete Stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Quantity cannot be adjusted for serialized stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:967
+#: templates/js/translated/stock.js:977
 msgid "Specify stock quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:1007
+#: templates/js/translated/stock.js:1017
 msgid "You must select at least one available stock item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1165
+#: templates/js/translated/stock.js:1175
 msgid "PASS"
 msgstr ""
 
-#: templates/js/translated/stock.js:1167
+#: templates/js/translated/stock.js:1177
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/translated/stock.js:1172
+#: templates/js/translated/stock.js:1182
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/translated/stock.js:1219
+#: templates/js/translated/stock.js:1229
 msgid "Pass test"
 msgstr ""
 
-#: templates/js/translated/stock.js:1222
+#: templates/js/translated/stock.js:1232
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1248
+#: templates/js/translated/stock.js:1258
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/translated/stock.js:1304
+#: templates/js/translated/stock.js:1314
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/translated/stock.js:1456
+#: templates/js/translated/stock.js:1466
 msgid "Edit Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1478
+#: templates/js/translated/stock.js:1488
 msgid "Delete Test Result"
 msgstr ""
 
-#: templates/js/translated/stock.js:1507
+#: templates/js/translated/stock.js:1517
 msgid "In production"
 msgstr "正在生产"
 
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1521
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1519
+#: templates/js/translated/stock.js:1529
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1525
+#: templates/js/translated/stock.js:1535
 msgid "No stock location set"
 msgstr "未设置仓储地点"
 
-#: templates/js/translated/stock.js:1683
+#: templates/js/translated/stock.js:1693
 msgid "Stock item is in production"
 msgstr "库存品正在生产"
 
-#: templates/js/translated/stock.js:1688
+#: templates/js/translated/stock.js:1698
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1701
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/translated/stock.js:1695
+#: templates/js/translated/stock.js:1705
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/translated/stock.js:1697
+#: templates/js/translated/stock.js:1707
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/translated/stock.js:1703
+#: templates/js/translated/stock.js:1713
 msgid "Serialized stock item has been allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1705
+#: templates/js/translated/stock.js:1715
 msgid "Stock item has been fully allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1707
+#: templates/js/translated/stock.js:1717
 msgid "Stock item has been partially allocated"
 msgstr ""
 
-#: templates/js/translated/stock.js:1712
+#: templates/js/translated/stock.js:1722
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:1719
+#: templates/js/translated/stock.js:1729
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/translated/stock.js:1721
+#: templates/js/translated/stock.js:1731
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/translated/stock.js:1723
+#: templates/js/translated/stock.js:1733
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/translated/stock.js:1727
+#: templates/js/translated/stock.js:1737
 #: templates/js/translated/table_filters.js:188
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/translated/stock.js:1777
+#: templates/js/translated/stock.js:1787
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/translated/stock.js:1859
+#: templates/js/translated/stock.js:1869
 msgid "Supplier part not specified"
 msgstr ""
 
-#: templates/js/translated/stock.js:1897
+#: templates/js/translated/stock.js:1907
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966
+#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976
 msgid "items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2006
+#: templates/js/translated/stock.js:2016
 msgid "batches"
 msgstr ""
 
-#: templates/js/translated/stock.js:2033
+#: templates/js/translated/stock.js:2043
 msgid "locations"
 msgstr ""
 
-#: templates/js/translated/stock.js:2035
+#: templates/js/translated/stock.js:2045
 msgid "Undefined location"
 msgstr ""
 
-#: templates/js/translated/stock.js:2234
+#: templates/js/translated/stock.js:2244
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/translated/stock.js:2248
+#: templates/js/translated/stock.js:2258
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/translated/stock.js:2249
+#: templates/js/translated/stock.js:2259
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/stock.js:2438
 msgid "Allocated Quantity"
 msgstr ""
 
-#: templates/js/translated/stock.js:2638
+#: templates/js/translated/stock.js:2648
 msgid "Details"
 msgstr "详情"
 
-#: templates/js/translated/stock.js:2663
+#: templates/js/translated/stock.js:2673
 msgid "Location no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2682
+#: templates/js/translated/stock.js:2692
 msgid "Purchase order no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2701
+#: templates/js/translated/stock.js:2711
 msgid "Customer no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2719
+#: templates/js/translated/stock.js:2729
 msgid "Stock item no longer exists"
 msgstr ""
 
-#: templates/js/translated/stock.js:2742
+#: templates/js/translated/stock.js:2752
 msgid "Added"
 msgstr ""
 
-#: templates/js/translated/stock.js:2750
+#: templates/js/translated/stock.js:2760
 msgid "Removed"
 msgstr ""
 
-#: templates/js/translated/stock.js:2791
+#: templates/js/translated/stock.js:2801
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2792
+#: templates/js/translated/stock.js:2802
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/translated/stock.js:2843
+#: templates/js/translated/stock.js:2853
 msgid "No installed items"
 msgstr ""
 
-#: templates/js/translated/stock.js:2894
+#: templates/js/translated/stock.js:2904
 msgid "Uninstall Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2940
 msgid "Install another stock item into this item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2931
+#: templates/js/translated/stock.js:2941
 msgid "Stock items can only be installed if they meet the following criteria"
 msgstr ""
 
-#: templates/js/translated/stock.js:2933
+#: templates/js/translated/stock.js:2943
 msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2944
 msgid "The Stock Item is currently available in stock"
 msgstr ""
 
-#: templates/js/translated/stock.js:2935
+#: templates/js/translated/stock.js:2945
 msgid "The Stock Item is serialized and does not belong to another item"
 msgstr ""
 
-#: templates/js/translated/stock.js:2948
+#: templates/js/translated/stock.js:2958
 msgid "Select part to install"
 msgstr ""