diff --git a/InvenTree/locale/de/LC_MESSAGES/django.mo b/InvenTree/locale/de/LC_MESSAGES/django.mo
index 0dd13dedf0..e90eab101b 100644
Binary files a/InvenTree/locale/de/LC_MESSAGES/django.mo and b/InvenTree/locale/de/LC_MESSAGES/django.mo differ
diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po
index 539f42aa8b..d8342de36c 100644
--- a/InvenTree/locale/de/LC_MESSAGES/django.po
+++ b/InvenTree/locale/de/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-04-21 09:17+0000\n"
+"POT-Creation-Date: 2021-05-05 17:33+1000\n"
 "PO-Revision-Date: 2021-04-21 10:02\n"
 "Last-Translator: \n"
 "Language-Team: German\n"
@@ -67,35 +67,36 @@ msgstr "Thema anwenden"
 msgid "Select Category"
 msgstr "Kategorie auswählen"
 
-#: InvenTree/helpers.py:375 order/models.py:245 order/models.py:344
-#: stock/views.py:1763
-msgid "Invalid quantity provided"
-msgstr "Keine gültige Menge"
-
-#: InvenTree/helpers.py:378
-msgid "Empty serial number string"
-msgstr "Keine Seriennummer angegeben"
-
-#: InvenTree/helpers.py:399
+#: InvenTree/helpers.py:377
 #, python-brace-format
 msgid "Duplicate serial: {n}"
 msgstr "Doppelte Seriennummer: {n}"
 
-#: InvenTree/helpers.py:403 InvenTree/helpers.py:406 InvenTree/helpers.py:409
+#: InvenTree/helpers.py:384 order/models.py:245 order/models.py:353
+#: stock/views.py:1763
+msgid "Invalid quantity provided"
+msgstr "Keine gültige Menge"
+
+#: InvenTree/helpers.py:387
+msgid "Empty serial number string"
+msgstr "Keine Seriennummer angegeben"
+
+#: InvenTree/helpers.py:409 InvenTree/helpers.py:412 InvenTree/helpers.py:415
+#: InvenTree/helpers.py:440
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr "Ungültige Gruppe: {g}"
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:445
 #, python-brace-format
 msgid "Duplicate serial: {g}"
 msgstr "Doppelte Seriennummer: {g}"
 
-#: InvenTree/helpers.py:422
+#: InvenTree/helpers.py:453
 msgid "No serial numbers found"
 msgstr "Keine Seriennummern gefunden"
 
-#: InvenTree/helpers.py:426
+#: InvenTree/helpers.py:457
 #, python-brace-format
 msgid "Number of unique serial number ({s}) must match quantity ({q})"
 msgstr "Anzahl der eindeutigen Seriennummern ({s}) muss mit der Anzahl ({q}) übereinstimmen"
@@ -140,7 +141,7 @@ msgstr "Name"
 #: company/templates/company/manufacturer_part_base.html:72
 #: company/templates/company/supplier_part_base.html:71
 #: company/templates/company/supplier_part_detail.html:31 label/models.py:108
-#: order/models.py:101 order/templates/order/purchase_order_detail.html:168
+#: order/models.py:101 order/templates/order/purchase_order_detail.html:143
 #: part/models.py:710 part/templates/part/detail.html:54
 #: part/templates/part/set_category.html:14 report/models.py:192
 #: report/models.py:505 report/models.py:544
@@ -165,23 +166,23 @@ msgstr "Beschreibung (optional)"
 msgid "parent"
 msgstr "Eltern"
 
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:491
 msgid "English"
 msgstr "Englisch"
 
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:492
 msgid "French"
 msgstr "Französisch"
 
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:493
 msgid "German"
 msgstr "Deutsch"
 
-#: InvenTree/settings.py:496
+#: InvenTree/settings.py:494
 msgid "Polish"
 msgstr "Polnisch"
 
-#: InvenTree/settings.py:497
+#: InvenTree/settings.py:495
 msgid "Turkish"
 msgstr "Türkisch"
 
@@ -375,16 +376,16 @@ msgstr "Zieldatum"
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr "Zieldatum für Bauauftrag-Fertigstellung."
 
-#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1227
+#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1241
 #: build/templates/build/allocation_card.html:23
 #: build/templates/build/auto_allocate.html:17
 #: build/templates/build/build_base.html:123
 #: build/templates/build/detail.html:31 common/models.py:703
 #: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77
 #: order/forms.py:188 order/forms.py:205 order/forms.py:239 order/forms.py:261
-#: order/forms.py:278 order/models.py:593 order/models.py:784
+#: order/forms.py:278 order/models.py:603 order/models.py:794
 #: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:200
+#: order/templates/order/purchase_order_detail.html:175
 #: order/templates/order/sales_order_detail.html:70
 #: order/templates/order/sales_order_detail.html:77
 #: order/templates/order/sales_order_detail.html:159
@@ -458,7 +459,7 @@ msgid "Location of completed parts"
 msgstr "Lagerort der Endprodukte"
 
 #: build/forms.py:215 build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:59 order/models.py:445
+#: build/templates/build/detail.html:59 order/models.py:455
 #: order/templates/order/receive_parts.html:24
 #: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
 #: templates/js/barcode.js:119 templates/js/build.js:770
@@ -508,7 +509,7 @@ msgstr "Bauauftrag"
 #: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55
 #: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183
 #: templates/InvenTree/search.html:185
-#: templates/InvenTree/settings/tabs.html:31 users/models.py:41
+#: templates/InvenTree/settings/tabs.html:31 users/models.py:43
 msgid "Build Orders"
 msgstr "Bauaufträge"
 
@@ -516,8 +517,8 @@ msgstr "Bauaufträge"
 msgid "Build Order Reference"
 msgstr "Bauauftragsreferenz"
 
-#: build/models.py:127 order/models.py:99 order/models.py:595
-#: order/templates/order/purchase_order_detail.html:195
+#: build/models.py:127 order/models.py:99 order/models.py:605
+#: order/templates/order/purchase_order_detail.html:170
 #: order/templates/order/sales_order_detail.html:219 part/models.py:2187
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197
@@ -540,10 +541,10 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
 
 #: build/models.py:152 build/templates/build/auto_allocate.html:16
 #: build/templates/build/build_base.html:118
-#: build/templates/build/detail.html:26 company/models.py:669
-#: order/models.py:637 order/models.py:669
+#: build/templates/build/detail.html:26 company/models.py:688
+#: order/models.py:647 order/models.py:679
 #: order/templates/order/order_wizard/select_parts.html:30
-#: order/templates/order/purchase_order_detail.html:156
+#: order/templates/order/purchase_order_detail.html:131
 #: order/templates/order/receive_parts.html:19
 #: order/templates/order/sales_order_detail.html:207 part/models.py:321
 #: part/models.py:1876 part/models.py:1888 part/models.py:1906
@@ -628,7 +629,7 @@ msgstr "Losnummer für dieses Endprodukt"
 msgid "Creation Date"
 msgstr "Erstelldatum"
 
-#: build/models.py:223 order/models.py:451
+#: build/models.py:223 order/models.py:461
 msgid "Target completion date"
 msgstr "geplantes Fertigstellungsdatum"
 
@@ -678,9 +679,9 @@ msgstr "Link zu einer externen URL"
 #: company/models.py:135 company/models.py:501
 #: company/templates/company/navbar.html:70
 #: company/templates/company/navbar.html:73 order/models.py:123
-#: order/models.py:597 order/templates/order/po_navbar.html:29
+#: order/models.py:607 order/templates/order/po_navbar.html:29
 #: order/templates/order/po_navbar.html:32
-#: order/templates/order/purchase_order_detail.html:234
+#: order/templates/order/purchase_order_detail.html:209
 #: order/templates/order/sales_order_detail.html:264
 #: order/templates/order/so_navbar.html:33
 #: order/templates/order/so_navbar.html:36 part/models.py:871
@@ -713,47 +714,47 @@ msgstr "Endprodukt stimmt nicht mit dem Bauauftrag überein"
 msgid "Completed build output"
 msgstr "Endprodukt fertigstellen"
 
-#: build/models.py:1118
+#: build/models.py:1132
 msgid "BuildItem must be unique for build, stock_item and install_into"
 msgstr "Bauauftrags-Objekt muss für Bauauftrag, Lager-Objekt und installiert_in eindeutig sein"
 
-#: build/models.py:1143
+#: build/models.py:1157
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1147
+#: build/models.py:1161
 #, python-brace-format
 msgid "Selected stock item not found in BOM for part '{p}'"
 msgstr "Ausgewähltes BestandsObjekt nicht Stückliste für Teil '{p}' gefunden"
 
-#: build/models.py:1151
+#: build/models.py:1165
 #, python-brace-format
 msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
 msgstr "Reserviermenge ({n}) muss kleiner Bestandsmenge ({q}) sein. Zugewiesene Anzahl ({n}) darf nicht die verfügbare ({q}) Anzahl überschreiten"
 
-#: build/models.py:1158 order/models.py:758
+#: build/models.py:1172 order/models.py:768
 msgid "StockItem is over-allocated"
 msgstr "Zu viele BestandsObjekt zugewiesen"
 
-#: build/models.py:1162 order/models.py:761
+#: build/models.py:1176 order/models.py:771
 msgid "Allocation quantity must be greater than zero"
 msgstr "Reserviermenge muss größer null sein"
 
-#: build/models.py:1166
+#: build/models.py:1180
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein"
 
-#: build/models.py:1206 stock/templates/stock/item_base.html:306
+#: build/models.py:1220 stock/templates/stock/item_base.html:306
 #: templates/InvenTree/search.html:183 templates/js/build.js:714
 #: templates/navbar.html:29
 msgid "Build"
 msgstr "Bauauftrag"
 
-#: build/models.py:1207
+#: build/models.py:1221
 msgid "Build to allocate parts"
 msgstr "Bauauftrag starten um Teile zuzuweisen"
 
-#: build/models.py:1214 part/templates/part/allocation.html:18
+#: build/models.py:1228 part/templates/part/allocation.html:18
 #: part/templates/part/allocation.html:24
 #: part/templates/part/allocation.html:31
 #: part/templates/part/allocation.html:49
@@ -765,19 +766,19 @@ msgstr "Bauauftrag starten um Teile zuzuweisen"
 msgid "Stock Item"
 msgstr "BestandsObjekt"
 
-#: build/models.py:1215
+#: build/models.py:1229
 msgid "Source stock item"
 msgstr "Quell-BestandsObjekt"
 
-#: build/models.py:1228
+#: build/models.py:1242
 msgid "Stock quantity to allocate to build"
 msgstr "BestandsObjekt-Anzahl dem Bauauftrag zuweisen"
 
-#: build/models.py:1236
+#: build/models.py:1250
 msgid "Install into"
 msgstr "Installiere in"
 
-#: build/models.py:1237
+#: build/models.py:1251
 msgid "Destination stock item"
 msgstr "Ziel-BestandsObjekt"
 
@@ -801,7 +802,7 @@ msgstr "Automatisch zuweisen"
 msgid "Unallocate stock"
 msgstr "Bestandszuordnung aufheben"
 
-#: build/templates/build/allocate.html:26 build/views.py:308 build/views.py:794
+#: build/templates/build/allocate.html:26 build/views.py:319 build/views.py:805
 msgid "Unallocate Stock"
 msgstr "Bestandszuordnung aufheben"
 
@@ -811,7 +812,7 @@ msgstr "Benötigte Teile bestellen"
 
 #: build/templates/build/allocate.html:30
 #: company/templates/company/detail_manufacturer_part.html:33
-#: company/templates/company/detail_supplier_part.html:32 order/views.py:794
+#: company/templates/company/detail_supplier_part.html:32 order/views.py:795
 #: part/templates/part/category.html:127
 msgid "Order Parts"
 msgstr "Teile bestellen"
@@ -954,7 +955,7 @@ msgid "Progress"
 msgstr "Fortschritt"
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:84 order/models.py:667
+#: build/templates/build/detail.html:84 order/models.py:677
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:33
 #: order/templates/order/sales_order_ship.html:25
@@ -1139,7 +1140,7 @@ msgstr "Bauauftrag ist nicht vollständig"
 msgid "Alter the quantity of stock allocated to the build output"
 msgstr "Anzahl des zugeordneten Bestands für die Endprodukte ändern"
 
-#: build/templates/build/index.html:28 build/views.py:667
+#: build/templates/build/index.html:28 build/views.py:678
 msgid "New Build Order"
 msgstr "Neuer Bauauftrag"
 
@@ -1226,141 +1227,145 @@ msgstr "Bestand dem Endprodukt zuweisen"
 msgid "Create Build Output"
 msgstr "Endprodukt anlegen"
 
-#: build/views.py:173 stock/models.py:969 stock/views.py:1789
+#: build/views.py:168
+msgid "Maximum output quantity is "
+msgstr ""
+
+#: build/views.py:184 stock/models.py:969 stock/views.py:1789
 msgid "Serial numbers already exist"
 msgstr "Seriennummern existieren bereits"
 
-#: build/views.py:182
+#: build/views.py:193
 msgid "Serial numbers required for trackable build output"
 msgstr "Seriennummern für verfolgbare Endprodukte benötigt"
 
-#: build/views.py:248
+#: build/views.py:259
 msgid "Delete Build Output"
 msgstr "Endprodukt entfernen"
 
-#: build/views.py:269 build/views.py:359
+#: build/views.py:280 build/views.py:370
 msgid "Confirm unallocation of build stock"
 msgstr "Entfernung von Bestands-Zuordnung bestätigen"
 
-#: build/views.py:270 build/views.py:360 stock/views.py:425
+#: build/views.py:281 build/views.py:371 stock/views.py:425
 msgid "Check the confirmation box"
 msgstr "Bestätigungsbox bestätigen"
 
-#: build/views.py:282
+#: build/views.py:293
 msgid "Build output does not match build"
 msgstr "Endprodukt stimmt nicht mit Bauauftrag überein"
 
-#: build/views.py:284 build/views.py:485
+#: build/views.py:295 build/views.py:496
 msgid "Build output must be specified"
 msgstr "Endprodukt muss angegeben sein"
 
-#: build/views.py:296
+#: build/views.py:307
 msgid "Build output deleted"
 msgstr "Endprodukt gelöscht"
 
-#: build/views.py:394
+#: build/views.py:405
 msgid "Complete Build Order"
 msgstr "Bauauftrag fertigstellen"
 
-#: build/views.py:400
+#: build/views.py:411
 msgid "Build order cannot be completed - incomplete outputs remain"
 msgstr "Bauauftrag kann nicht abgeschlossen werden, es gibt noch unvollständige Endprodukte"
 
-#: build/views.py:411
+#: build/views.py:422
 msgid "Completed build order"
 msgstr "Bauauftrag fertiggestellt"
 
-#: build/views.py:427
+#: build/views.py:438
 msgid "Complete Build Output"
 msgstr "Endprodukt fertigstellen"
 
-#: build/views.py:469
+#: build/views.py:480
 msgid "Invalid stock status value selected"
 msgstr "Ungültiger Lagerbestands-Status ausgewählt"
 
-#: build/views.py:476
+#: build/views.py:487
 msgid "Quantity to complete cannot exceed build output quantity"
 msgstr "Fertigzustellende Anzahl darf nicht die geplante Endprodukt-Anzahl überschreiten"
 
-#: build/views.py:482
+#: build/views.py:493
 msgid "Confirm completion of incomplete build"
 msgstr "Endprodukt-Fertigstellung bestätigen"
 
-#: build/views.py:581
+#: build/views.py:592
 msgid "Build output completed"
 msgstr "Endprodukt fertiggestellt"
 
-#: build/views.py:721
+#: build/views.py:732
 msgid "Created new build"
 msgstr "Neuen Bauauftrag angelegt"
 
-#: build/views.py:742
+#: build/views.py:753
 msgid "Edit Build Order Details"
 msgstr "Bauauftragdetails bearbeiten"
 
-#: build/views.py:775
+#: build/views.py:786
 msgid "Edited build"
 msgstr "Bauauftrag bearbeitet"
 
-#: build/views.py:784
+#: build/views.py:795
 msgid "Delete Build Order"
 msgstr "Bauauftrag löschen"
 
-#: build/views.py:799
+#: build/views.py:810
 msgid "Removed parts from build allocation"
 msgstr "Teile von Bauzuordnung entfernt"
 
-#: build/views.py:811
+#: build/views.py:822
 msgid "Allocate stock to build output"
 msgstr "Bestand dem Endprodukt zuweisen"
 
-#: build/views.py:854
+#: build/views.py:865
 msgid "Item must be currently in stock"
 msgstr "Teil muss aktuell im Bestand sein"
 
-#: build/views.py:860
+#: build/views.py:871
 msgid "Stock item is over-allocated"
 msgstr "BestandObjekt ist zu oft zugewiesen"
 
-#: build/views.py:861 templates/js/bom.js:230 templates/js/build.js:575
+#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:575
 #: templates/js/build.js:838 templates/js/build.js:1021
 msgid "Available"
 msgstr "Verfügbar"
 
-#: build/views.py:863
+#: build/views.py:874
 msgid "Stock item must be selected"
 msgstr "BestandsObjekt muss ausgewählt sein"
 
-#: build/views.py:1026
+#: build/views.py:1037
 msgid "Edit Stock Allocation"
 msgstr "Bestandszuordnung bearbeiten"
 
-#: build/views.py:1030
+#: build/views.py:1041
 msgid "Updated Build Item"
 msgstr "Bauobjekt aktualisiert"
 
-#: build/views.py:1059
+#: build/views.py:1070
 msgid "Add Build Order Attachment"
 msgstr "Bauauftrags-Anhang hinzufügen"
 
-#: build/views.py:1072 order/views.py:110 order/views.py:162 part/views.py:172
+#: build/views.py:1083 order/views.py:110 order/views.py:162 part/views.py:172
 #: stock/views.py:277
 msgid "Added attachment"
 msgstr "Anhang hinzugefügt"
 
-#: build/views.py:1108 order/views.py:189 order/views.py:210
+#: build/views.py:1119 order/views.py:189 order/views.py:210
 msgid "Edit Attachment"
 msgstr "Anhang bearbeiten"
 
-#: build/views.py:1118 order/views.py:193 order/views.py:214
+#: build/views.py:1129 order/views.py:193 order/views.py:214
 msgid "Attachment updated"
 msgstr "Anhang aktualisiert"
 
-#: build/views.py:1128 order/views.py:229 order/views.py:243
+#: build/views.py:1139 order/views.py:229 order/views.py:243
 msgid "Delete Attachment"
 msgstr "Anhang löschen"
 
-#: build/views.py:1133 order/views.py:235 order/views.py:249 stock/views.py:333
+#: build/views.py:1144 order/views.py:235 order/views.py:249 stock/views.py:333
 msgid "Deleted attachment"
 msgstr "Anhang gelöscht"
 
@@ -1766,7 +1771,7 @@ msgstr "Hersteller-Teilenummer"
 #: company/templates/company/manufacturer_part_detail.html:26
 #: company/templates/company/supplier_part_base.html:101
 #: company/templates/company/supplier_part_detail.html:35
-#: order/templates/order/purchase_order_detail.html:183 part/bom.py:171
+#: order/templates/order/purchase_order_detail.html:158 part/bom.py:171
 #: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307
 msgid "MPN"
 msgstr "MPN"
@@ -1865,7 +1870,7 @@ msgstr "Produziert diese Firma Teile?"
 msgid "Base Part"
 msgstr "Basisteil"
 
-#: company/models.py:312 company/models.py:463 order/views.py:1372
+#: company/models.py:312 company/models.py:463 order/views.py:1384
 msgid "Select part"
 msgstr "Teil auswählen"
 
@@ -1905,7 +1910,7 @@ msgstr "Zulieferer auswählen"
 
 #: company/models.py:475 company/templates/company/supplier_part_base.html:88
 #: company/templates/company/supplier_part_detail.html:26
-#: order/templates/order/purchase_order_detail.html:174 part/bom.py:176
+#: order/templates/order/purchase_order_detail.html:149 part/bom.py:176
 #: part/bom.py:287
 msgid "SKU"
 msgstr "SKU (Lagerbestandseinheit)"
@@ -2017,9 +2022,11 @@ msgstr "Sind Sie sicher, dass Sie die Firma '%(name)s' löschen wollen?"
 
 #: company/templates/company/delete.html:12
 #, python-format
-msgid "There are %(count)s parts sourced from this company.<br>\n"
+msgid ""
+"There are %(count)s parts sourced from this company.<br>\n"
 "If this supplier is deleted, these supplier part entries will also be deleted."
-msgstr "Es gibt %(count)s Teile, die von diesem Unternehmen bezogen werden.<br>\n"
+msgstr ""
+"Es gibt %(count)s Teile, die von diesem Unternehmen bezogen werden.<br>\n"
 "Wenn dieser Lieferant gelöscht wird, werden auch diese Zulieferer-Teile gelöscht."
 
 #: company/templates/company/detail.html:21
@@ -2034,7 +2041,7 @@ msgstr "Keine Website angegeben"
 msgid "Uses default currency"
 msgstr "verwendet Standard-Währung"
 
-#: company/templates/company/detail.html:67 order/models.py:440
+#: company/templates/company/detail.html:67 order/models.py:450
 #: order/templates/order/sales_order_base.html:92 stock/models.py:415
 #: stock/models.py:416 stock/templates/stock/item_base.html:251
 #: templates/js/company.js:40 templates/js/order.js:267
@@ -2123,13 +2130,13 @@ msgstr "Zulieferer-Teile"
 
 #: company/templates/company/detail_supplier_part.html:21
 #: order/templates/order/order_wizard/select_parts.html:42
-#: order/templates/order/purchase_order_detail.html:75
+#: order/templates/order/purchase_order_detail.html:50
 msgid "Create new supplier part"
 msgstr "Neues Zulieferer-Teil anlegen"
 
 #: company/templates/company/detail_supplier_part.html:22
 #: company/templates/company/manufacturer_part_suppliers.html:17
-#: order/templates/order/purchase_order_detail.html:74
+#: order/templates/order/purchase_order_detail.html:49
 #: part/templates/part/supplier.html:17 templates/js/stock.js:1163
 msgid "New Supplier Part"
 msgstr "Neues Zulieferer-Teil"
@@ -2227,7 +2234,7 @@ msgstr "Zuliefererteil entfernen"
 #: company/templates/company/manufacturer_part_suppliers.html:22
 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44
 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22
-#: stock/views.py:1002 users/models.py:184
+#: stock/views.py:1002 users/models.py:187
 msgid "Delete"
 msgstr "Löschen"
 
@@ -2253,7 +2260,7 @@ msgstr "Zulieferer-Teile"
 #: stock/templates/stock/location_navbar.html:22
 #: stock/templates/stock/location_navbar.html:29
 #: templates/InvenTree/search.html:198 templates/js/stock.js:968
-#: templates/stats.html:72 templates/stats.html:81 users/models.py:40
+#: templates/stats.html:72 templates/stats.html:81 users/models.py:42
 msgid "Stock Items"
 msgstr "BestandsObjekte"
 
@@ -2267,7 +2274,7 @@ msgstr "BestandsObjekte"
 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228
 #: templates/InvenTree/search.html:345
 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:46
-#: users/models.py:43
+#: users/models.py:45
 msgid "Sales Orders"
 msgstr "Aufträge"
 
@@ -2279,7 +2286,7 @@ msgstr "Aufträge"
 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205
 #: templates/InvenTree/search.html:325
 #: templates/InvenTree/settings/tabs.html:34 templates/navbar.html:37
-#: users/models.py:42
+#: users/models.py:44
 msgid "Purchase Orders"
 msgstr "Bestellungen"
 
@@ -2358,7 +2365,7 @@ msgid "Pricing Information"
 msgstr "Preisinformationen ansehen"
 
 #: company/templates/company/supplier_part_pricing.html:19 company/views.py:794
-#: part/templates/part/sale_prices.html:17 part/views.py:2624
+#: part/templates/part/sale_prices.html:17 part/views.py:2636
 msgid "Add Price Break"
 msgstr "Preisstaffel hinzufügen"
 
@@ -2468,15 +2475,15 @@ msgstr "Neues Zulieferer-Teil anlegen"
 msgid "Delete Supplier Part"
 msgstr "Zulieferer-Teil entfernen"
 
-#: company/views.py:799 part/views.py:2628
+#: company/views.py:799 part/views.py:2640
 msgid "Added new price break"
 msgstr "neue Preisstaffel hinzufügt"
 
-#: company/views.py:855 part/views.py:2672
+#: company/views.py:855 part/views.py:2684
 msgid "Edit Price Break"
 msgstr "Preisstaffel bearbeiten"
 
-#: company/views.py:870 part/views.py:2686
+#: company/views.py:870 part/views.py:2698
 msgid "Delete Price Break"
 msgstr "Preisstaffel löschen"
 
@@ -2566,7 +2573,7 @@ msgstr "Zieldatum für Auftrags-Lieferung."
 msgid "Enter sales order number"
 msgstr "Auftrag-Nummer eingeben"
 
-#: order/forms.py:145 order/models.py:452
+#: order/forms.py:145 order/models.py:462
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr "Zieldatum für Auftrags-Fertigstellung."
 
@@ -2602,7 +2609,7 @@ msgstr "Nutzer oder Gruppe der/die für diesen Auftrag zuständig ist/sind"
 msgid "Order notes"
 msgstr "Bestell-Notizen"
 
-#: order/models.py:182 order/models.py:445
+#: order/models.py:182 order/models.py:455
 msgid "Purchase order status"
 msgstr "Bestellungs-Status"
 
@@ -2643,8 +2650,8 @@ msgstr "Geplantes Lieferdatum für Auftrag."
 msgid "Date order was completed"
 msgstr "Datum an dem der Auftrag fertigstellt wurde"
 
-#: order/models.py:243 order/models.py:342 part/views.py:1586
-#: stock/models.py:270 stock/models.py:953
+#: order/models.py:243 part/views.py:1586 stock/models.py:270
+#: stock/models.py:953
 msgid "Quantity must be greater than zero"
 msgstr "Anzahl muss größer Null sein"
 
@@ -2652,120 +2659,132 @@ msgstr "Anzahl muss größer Null sein"
 msgid "Part supplier must match PO supplier"
 msgstr "Teile-Zulieferer muss dem Zulieferer der Bestellung entsprechen"
 
-#: order/models.py:337
+#: order/models.py:344
 msgid "Lines can only be received against an order marked as 'Placed'"
 msgstr "Nur Teile aufgegebener Bestllungen können empfangen werden"
 
-#: order/models.py:359
+#: order/models.py:348
+#, fuzzy
+#| msgid "Quantity must be integer"
+msgid "Quantity must be an integer"
+msgstr "Anzahl muss eine Ganzzahl sein"
+
+#: order/models.py:350
+#, fuzzy
+#| msgid "Quantity must be positive"
+msgid "Quantity must be a positive number"
+msgstr "Anzahl muss positiv sein"
+
+#: order/models.py:369
 msgid "Received items"
 msgstr "Elemente empfangen"
 
-#: order/models.py:441
+#: order/models.py:451
 msgid "Company to which the items are being sold"
 msgstr "Firma an die die Teile verkauft werden"
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer Reference "
 msgstr "Kundenreferenz"
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer order reference code"
 msgstr "Bestellreferenz"
 
-#: order/models.py:455 templates/js/order.js:303
+#: order/models.py:465 templates/js/order.js:303
 msgid "Shipment Date"
 msgstr "Versanddatum"
 
-#: order/models.py:462
+#: order/models.py:472
 msgid "shipped by"
 msgstr "Versand von"
 
-#: order/models.py:506
+#: order/models.py:516
 msgid "SalesOrder cannot be shipped as it is not currently pending"
 msgstr "Bestellung kann nicht versendet werden weil er nicht anhängig ist"
 
-#: order/models.py:593
+#: order/models.py:603
 msgid "Item quantity"
 msgstr "Anzahl"
 
-#: order/models.py:595
+#: order/models.py:605
 msgid "Line item reference"
 msgstr "Position - Referenz"
 
-#: order/models.py:597
+#: order/models.py:607
 msgid "Line item notes"
 msgstr "Position - Notizen"
 
-#: order/models.py:623 order/models.py:667
+#: order/models.py:633 order/models.py:677
 #: part/templates/part/allocation.html:17
 #: part/templates/part/allocation.html:45
 msgid "Order"
 msgstr "Bestellung"
 
-#: order/models.py:624 order/templates/order/order_base.html:9
+#: order/models.py:634 order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:24
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:313 templates/js/order.js:148
 msgid "Purchase Order"
 msgstr "Bestellung"
 
-#: order/models.py:638
+#: order/models.py:648
 msgid "Supplier part"
 msgstr "Zulieferer-Teil"
 
-#: order/models.py:641 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:214
+#: order/models.py:651 order/templates/order/order_base.html:131
+#: order/templates/order/purchase_order_detail.html:189
 #: order/templates/order/receive_parts.html:22
 #: order/templates/order/sales_order_base.html:131
 msgid "Received"
 msgstr "Empfangen"
 
-#: order/models.py:641
+#: order/models.py:651
 msgid "Number of items received"
 msgstr "Empfangene Objekt-Anzahl"
 
-#: order/models.py:648 stock/models.py:508
+#: order/models.py:658 stock/models.py:508
 #: stock/templates/stock/item_base.html:320
 msgid "Purchase Price"
 msgstr "Preis"
 
-#: order/models.py:649
+#: order/models.py:659
 msgid "Unit purchase price"
 msgstr "Preis pro Einheit"
 
-#: order/models.py:743 order/models.py:745
+#: order/models.py:753 order/models.py:755
 msgid "Stock item has not been assigned"
 msgstr "BestandsObjekt wurde nicht zugewiesen"
 
-#: order/models.py:749
+#: order/models.py:759
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr "Kann BestandsObjekt keiner Zeile mit einem anderen Teil hinzufügen"
 
-#: order/models.py:751
+#: order/models.py:761
 msgid "Cannot allocate stock to a line without a part"
 msgstr "Kann BestandsObjekt keiner Zeile ohne Teil hinzufügen"
 
-#: order/models.py:754
+#: order/models.py:764
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr "Die zugeordnete Anzahl darf nicht die verfügbare Anzahl überschreiten"
 
-#: order/models.py:764
+#: order/models.py:774
 msgid "Quantity must be 1 for serialized stock item"
 msgstr "Anzahl für BestandsObjekt mit Seriennummer muss 1 sein"
 
-#: order/models.py:769
+#: order/models.py:779
 msgid "Line"
 msgstr "Position"
 
-#: order/models.py:780
+#: order/models.py:790
 msgid "Item"
 msgstr "Position"
 
-#: order/models.py:781
+#: order/models.py:791
 msgid "Select stock item to allocate"
 msgstr "BestandsObjekt für Zuordnung auswählen"
 
-#: order/models.py:784
+#: order/models.py:794
 msgid "Enter stock allocation quantity"
 msgstr "Anzahl für Bestandszuordnung eingeben"
 
@@ -2813,9 +2832,24 @@ msgstr "Bestellstatus"
 msgid "Issued"
 msgstr "Aufgegeben"
 
-#: order/templates/order/order_cancel.html:7
-#: order/templates/order/sales_order_cancel.html:9
-msgid "Cancelling this order means that the order will no longer be editable."
+#: order/templates/order/order_base.html:180
+#: order/templates/order/purchase_order_detail.html:100
+#: part/templates/part/category.html:185 part/templates/part/category.html:227
+#: stock/templates/stock/location.html:191 templates/js/stock.js:708
+#: templates/js/stock.js:1169
+msgid "New Location"
+msgstr "Neuer Lagerort"
+
+#: order/templates/order/order_base.html:181
+#: order/templates/order/purchase_order_detail.html:101
+#: stock/templates/stock/location.html:42
+msgid "Create new stock location"
+msgstr "Neuen Lagerort anlegen"
+
+#: order/templates/order/order_cancel.html:8
+#, fuzzy
+#| msgid "Cancelling this order means that the order will no longer be editable."
+msgid "Cancelling this order means that the order and line items will no longer be editable."
 msgstr "Abbruch dieser Bestellung bedeutet, dass sie nicht länger bearbeitbar ist."
 
 #: order/templates/order/order_complete.html:7
@@ -2827,10 +2861,12 @@ msgid "This order has line items which have not been marked as received."
 msgstr "Diese Bestellung enthält Positionen, die nicht als empfangen markiert wurden."
 
 #: order/templates/order/order_complete.html:11
-msgid "Marking this order as complete will remove these line items."
-msgstr "Wenn Sie diese Bestellung als abgeschlossen markieren, werden diese Positionen entfernt."
+#, fuzzy
+#| msgid "Cancelling this order means that the order will no longer be editable."
+msgid "Completing this order means that the order and line items will no longer be editable."
+msgstr "Abbruch dieser Bestellung bedeutet, dass sie nicht länger bearbeitbar ist."
 
-#: order/templates/order/order_issue.html:7
+#: order/templates/order/order_issue.html:8
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr "Nachdem diese Bestellung plaziert ist können die Positionen nicht länger bearbeitbar ist."
 
@@ -2882,11 +2918,15 @@ msgid "Select Purchase Order"
 msgstr "Bestellung auswählen"
 
 #: order/templates/order/order_wizard/select_pos.html:45
-msgid "Create new purchase order for {{ supplier.name }}"
-msgstr "Neue Bestellung für {{ supplier.name }} anlegen"
+#, fuzzy, python-format
+#| msgid "Create new purchase order"
+msgid "Create new purchase order for %(name)s"
+msgstr "Neue Bestellung anlegen"
 
 #: order/templates/order/order_wizard/select_pos.html:68
-msgid "Select a purchase order for"
+#, fuzzy, python-format
+#| msgid "Select a purchase order for"
+msgid "Select a purchase order for %(name)s"
 msgstr "Bestellung auswählen für"
 
 #: order/templates/order/po_attachments.html:12
@@ -2908,43 +2948,29 @@ msgid "Purchase Order Items"
 msgstr "Bestellungs-Positionen"
 
 #: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py:1108
-#: order/views.py:1191
+#: order/templates/order/sales_order_detail.html:22 order/views.py:1120
+#: order/views.py:1203
 msgid "Add Line Item"
 msgstr "Position hinzufügen"
 
-#: order/templates/order/purchase_order_detail.html:45
-#: order/templates/order/purchase_order_detail.html:125
-#: part/templates/part/category.html:185 part/templates/part/category.html:227
-#: stock/templates/stock/location.html:191 templates/js/stock.js:708
-#: templates/js/stock.js:1169
-msgid "New Location"
-msgstr "Neuer Lagerort"
-
-#: order/templates/order/purchase_order_detail.html:46
-#: order/templates/order/purchase_order_detail.html:126
-#: stock/templates/stock/location.html:42
-msgid "Create new stock location"
-msgstr "Neuen Lagerort anlegen"
-
-#: order/templates/order/purchase_order_detail.html:139
+#: order/templates/order/purchase_order_detail.html:114
 msgid "No line items found"
 msgstr "Keine Positionen gefunden"
 
-#: order/templates/order/purchase_order_detail.html:205
+#: order/templates/order/purchase_order_detail.html:180
 msgid "Unit Price"
 msgstr "Stück-Preis"
 
-#: order/templates/order/purchase_order_detail.html:246
+#: order/templates/order/purchase_order_detail.html:221
 #: order/templates/order/sales_order_detail.html:294
 msgid "Edit line item"
 msgstr "Position bearbeiten"
 
-#: order/templates/order/purchase_order_detail.html:247
+#: order/templates/order/purchase_order_detail.html:222
 msgid "Delete line item"
 msgstr "Position löschen"
 
-#: order/templates/order/purchase_order_detail.html:252
+#: order/templates/order/purchase_order_detail.html:227
 msgid "Receive line item"
 msgstr "Position empfangen"
 
@@ -2967,7 +2993,7 @@ msgstr "Ausstehende Teile für <b>%(order)s</b> - <i>%(desc)s</i> empfangen"
 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114
 #: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:577
 #: templates/navbar.html:23 templates/stats.html:59 templates/stats.html:68
-#: users/models.py:38
+#: users/models.py:40
 msgid "Parts"
 msgstr "Teile"
 
@@ -3020,6 +3046,10 @@ msgstr "Kundenreferenz"
 msgid "Warning"
 msgstr "Warnung"
 
+#: order/templates/order/sales_order_cancel.html:9
+msgid "Cancelling this order means that the order will no longer be editable."
+msgstr "Abbruch dieser Bestellung bedeutet, dass sie nicht länger bearbeitbar ist."
+
 #: order/templates/order/sales_order_detail.html:13
 msgid "Sales Order Items"
 msgstr "Auftrags-Positionen"
@@ -3214,65 +3244,65 @@ msgstr "Anzahl kleiner null empfangen"
 msgid "No lines specified"
 msgstr "Keine Zeilen angegeben"
 
-#: order/views.py:1060
+#: order/views.py:1069
 #, python-brace-format
 msgid "Ordered {n} parts"
 msgstr "{n} Teile bestellt"
 
-#: order/views.py:1117
+#: order/views.py:1129
 msgid "Supplier part must be specified"
 msgstr "Zulieferer-Teil muss ausgewählt werden"
 
-#: order/views.py:1123
+#: order/views.py:1135
 msgid "Supplier must match for Part and Order"
 msgstr "Zulieferer muss zu Teil und Bestellung passen"
 
-#: order/views.py:1242 order/views.py:1260
+#: order/views.py:1254 order/views.py:1272
 msgid "Edit Line Item"
 msgstr "Position bearbeiten"
 
-#: order/views.py:1276 order/views.py:1288
+#: order/views.py:1288 order/views.py:1300
 msgid "Delete Line Item"
 msgstr "Position löschen"
 
-#: order/views.py:1281 order/views.py:1293
+#: order/views.py:1293 order/views.py:1305
 msgid "Deleted line item"
 msgstr "Position gelöscht"
 
-#: order/views.py:1306
+#: order/views.py:1318
 msgid "Allocate Serial Numbers"
 msgstr "Seriennummern zuweisen"
 
-#: order/views.py:1351
+#: order/views.py:1363
 #, python-brace-format
 msgid "Allocated {n} items"
 msgstr "{n} Positionen zugeordnet"
 
-#: order/views.py:1367
+#: order/views.py:1379
 msgid "Select line item"
 msgstr "Position auswählen"
 
-#: order/views.py:1398
+#: order/views.py:1410
 msgid "No matching item for serial"
 msgstr "Kein passends Teil für Seriennummer gefunden"
 
-#: order/views.py:1408
+#: order/views.py:1420
 msgid "is not in stock"
 msgstr "ist nicht auf Lager"
 
-#: order/views.py:1416
+#: order/views.py:1428
 msgid "already allocated to an order"
 msgstr "bereits einem Auftrag zugeordnet"
 
-#: order/views.py:1470
+#: order/views.py:1482
 msgid "Allocate Stock to Order"
 msgstr "Lagerbestand dem Auftrag zuweisen"
 
-#: order/views.py:1544
+#: order/views.py:1556
 msgid "Edit Allocation Quantity"
 msgstr "Zuordnung bearbeiten"
 
-#: order/views.py:1559
+#: order/views.py:1571
 msgid "Remove allocation"
 msgstr "Zuordnung entfernen"
 
@@ -3458,7 +3488,7 @@ msgstr "Teil-Kategorie"
 #: part/models.py:83 part/templates/part/category.html:23
 #: part/templates/part/category.html:94 part/templates/part/category.html:141
 #: templates/InvenTree/search.html:127 templates/stats.html:63
-#: users/models.py:37
+#: users/models.py:39
 msgid "Part Categories"
 msgstr "Teil-Kategorien"
 
@@ -4005,7 +4035,7 @@ msgstr "Neuen Bauauftrag beginnen"
 msgid "All parts"
 msgstr "Alle Teile"
 
-#: part/templates/part/category.html:29 part/views.py:2270
+#: part/templates/part/category.html:29 part/views.py:2282
 msgid "Create new part category"
 msgstr "Teil-Kategorie anlegen"
 
@@ -4695,63 +4725,63 @@ msgstr "Teil wurde gelöscht"
 msgid "Part Pricing"
 msgstr "Teilbepreisung"
 
-#: part/views.py:2069
+#: part/views.py:2081
 msgid "Create Part Parameter Template"
 msgstr "Teilparametervorlage anlegen"
 
-#: part/views.py:2079
+#: part/views.py:2091
 msgid "Edit Part Parameter Template"
 msgstr "Teilparametervorlage bearbeiten"
 
-#: part/views.py:2086
+#: part/views.py:2098
 msgid "Delete Part Parameter Template"
 msgstr "Teilparametervorlage löschen"
 
-#: part/views.py:2094
+#: part/views.py:2106
 msgid "Create Part Parameter"
 msgstr "Teilparameter anlegen"
 
-#: part/views.py:2144
+#: part/views.py:2156
 msgid "Edit Part Parameter"
 msgstr "Teilparameter bearbeiten"
 
-#: part/views.py:2158
+#: part/views.py:2170
 msgid "Delete Part Parameter"
 msgstr "Teilparameter löschen"
 
-#: part/views.py:2218
+#: part/views.py:2230
 msgid "Edit Part Category"
 msgstr "Teil-Kategorie bearbeiten"
 
-#: part/views.py:2256
+#: part/views.py:2268
 msgid "Delete Part Category"
 msgstr "Teil-Kategorie löschen"
 
-#: part/views.py:2262
+#: part/views.py:2274
 msgid "Part category was deleted"
 msgstr "Teil-Kategorie wurde gelöscht"
 
-#: part/views.py:2314
+#: part/views.py:2326
 msgid "Create Category Parameter Template"
 msgstr "Kategorieparametervorlage anlegen"
 
-#: part/views.py:2415
+#: part/views.py:2427
 msgid "Edit Category Parameter Template"
 msgstr "Kategorieparametervorlage bearbeiten"
 
-#: part/views.py:2471
+#: part/views.py:2483
 msgid "Delete Category Parameter Template"
 msgstr "Kategorieparametervorlage löschen"
 
-#: part/views.py:2490
+#: part/views.py:2502
 msgid "Create BOM Item"
 msgstr "Stücklisten-Position anlegen"
 
-#: part/views.py:2560
+#: part/views.py:2572
 msgid "Edit BOM item"
 msgstr "Stücklisten-Position bearbeiten"
 
-#: part/views.py:2616
+#: part/views.py:2628
 msgid "Confim BOM item deletion"
 msgstr "löschen von Stücklisten-Position bestätigen"
 
@@ -5302,15 +5332,15 @@ msgid "Stock adjustment actions"
 msgstr "Bestands-Anpassungs Aktionen"
 
 #: stock/templates/stock/item_base.html:164
-#: stock/templates/stock/location.html:65 templates/stock_table.html:56
+#: stock/templates/stock/location.html:65 templates/stock_table.html:57
 msgid "Count stock"
 msgstr "Bestand zählen"
 
-#: stock/templates/stock/item_base.html:167 templates/stock_table.html:54
+#: stock/templates/stock/item_base.html:167 templates/stock_table.html:55
 msgid "Add stock"
 msgstr "Bestand hinzufügen"
 
-#: stock/templates/stock/item_base.html:170 templates/stock_table.html:55
+#: stock/templates/stock/item_base.html:170 templates/stock_table.html:56
 msgid "Remove stock"
 msgstr "Bestand entfernen"
 
@@ -5504,7 +5534,7 @@ msgid "Stock Details"
 msgstr "Objekt-Details"
 
 #: stock/templates/stock/location.html:117 templates/InvenTree/search.html:279
-#: templates/stats.html:76 users/models.py:39
+#: templates/stats.html:76 users/models.py:41
 msgid "Stock Locations"
 msgstr "Bestand-Lagerorte"
 
@@ -5690,7 +5720,7 @@ msgstr "Entfernen"
 msgid "Add Stock Items"
 msgstr "BestandsObjekte hinzufügen"
 
-#: stock/views.py:1001 users/models.py:180
+#: stock/views.py:1001 users/models.py:183
 msgid "Add"
 msgstr "Hinzufügen"
 
@@ -5868,6 +5898,40 @@ msgstr "an Kunde versand"
 msgid "No stock location set"
 msgstr "Kein Lagerort gesetzt"
 
+#: templates/InvenTree/settings/appearance.html:10
+msgid "Theme Settings"
+msgstr "Anzeige-Einstellungen"
+
+#: templates/InvenTree/settings/appearance.html:17
+msgid "Color Themes"
+msgstr "Farbschemata"
+
+#: templates/InvenTree/settings/appearance.html:29
+#, fuzzy, python-format
+#| msgid ""
+#| "\n"
+#| "\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
+#| "\t\tPlease select another color theme :)\n"
+#| "\t"
+msgid ""
+"\n"
+"        The CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
+"        Please select another color theme :)\n"
+"    "
+msgstr ""
+"\n"
+"\t\tDie CSS Datei \"%(invalid_color_theme)s.css\" für das aktuell ausgewählte Farbschema wurde nicht gefunden.<br>\n"
+"\t\tBitte ein anderes Farbschema auswählen:)\n"
+"\t"
+
+#: templates/InvenTree/settings/appearance.html:39
+msgid "Language"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:61
+msgid "Set Language"
+msgstr ""
+
 #: templates/InvenTree/settings/build.html:10
 msgid "Build Order Settings"
 msgstr "Bauauftrag-Einstellungen"
@@ -5951,7 +6015,7 @@ msgstr "Auftrags-Einstellungen"
 msgid "Stock Settings"
 msgstr "Bestands-Einstellungen"
 
-#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:49
+#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:50
 msgid "Stock Options"
 msgstr "Stock-Optionen"
 
@@ -5965,8 +6029,8 @@ msgid "Account"
 msgstr "Konto"
 
 #: templates/InvenTree/settings/tabs.html:9
-msgid "Theme"
-msgstr "Thema"
+msgid "Appearance"
+msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:13
 msgid "InvenTree Settings"
@@ -5984,25 +6048,6 @@ msgstr "Bericht"
 msgid "Categories"
 msgstr "Kategorien"
 
-#: templates/InvenTree/settings/theme.html:10
-msgid "Theme Settings"
-msgstr "Anzeige-Einstellungen"
-
-#: templates/InvenTree/settings/theme.html:17
-msgid "Color Themes"
-msgstr "Farbschemata"
-
-#: templates/InvenTree/settings/theme.html:29
-#, python-format
-msgid "\n"
-"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
-"\t\tPlease select another color theme :)\n"
-"\t"
-msgstr "\n"
-"\t\tDie CSS Datei \"%(invalid_color_theme)s.css\" für das aktuell ausgewählte Farbschema wurde nicht gefunden.<br>\n"
-"\t\tBitte ein anderes Farbschema auswählen:)\n"
-"\t"
-
 #: templates/InvenTree/settings/user.html:16
 msgid "User Information"
 msgstr "Benutzerinformation"
@@ -6065,13 +6110,23 @@ msgid "View Code on GitHub"
 msgstr "Code auf GitHub ansehen"
 
 #: templates/about.html:63
-msgid "Get the App"
-msgstr "App herunterladen"
+msgid "Credits"
+msgstr ""
 
 #: templates/about.html:68
+msgid "Mobile App"
+msgstr ""
+
+#: templates/about.html:73
 msgid "Submit Bug Report"
 msgstr "Fehlerbericht senden"
 
+#: templates/about.html:82 templates/js/modals.js:550
+#: templates/js/modals.js:809 templates/modals.html:28 templates/modals.html:52
+#: templates/modals.html:93
+msgid "Close"
+msgstr "Schliessen"
+
 #: templates/attachment_table.html:6
 msgid "Add Attachment"
 msgstr "Anhang hinzufügen"
@@ -6267,7 +6322,7 @@ msgid "Quantity Per"
 msgstr "Anzahl pro"
 
 #: templates/js/build.js:638 templates/js/build.js:1056
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order stock"
 msgstr "Bestand bestellen"
 
@@ -6400,11 +6455,6 @@ msgstr "Lade Daten"
 msgid "Submit"
 msgstr "Abschicken"
 
-#: templates/js/modals.js:550 templates/js/modals.js:809
-#: templates/modals.html:28 templates/modals.html:52 templates/modals.html:93
-msgid "Close"
-msgstr "Schliessen"
-
 #: templates/js/modals.js:760
 msgid "Invalid response from server"
 msgstr "ungültige Antwort vom Server"
@@ -6978,6 +7028,10 @@ msgstr "Alle"
 msgid "Form errors exist"
 msgstr "Fehler in Formular"
 
+#: templates/navbar.html:13
+msgid "Toggle navigation"
+msgstr ""
+
 #: templates/navbar.html:33
 msgid "Buy"
 msgstr "Kaufen"
@@ -6990,7 +7044,7 @@ msgstr "Verkaufen"
 msgid "Scan Barcode"
 msgstr "Barcode scannen"
 
-#: templates/navbar.html:77 users/models.py:36
+#: templates/navbar.html:77 users/models.py:38
 msgid "Admin"
 msgstr "Admin"
 
@@ -7122,43 +7176,43 @@ msgstr "Barcode Aktionen"
 msgid "Print test reports"
 msgstr "Test-Berichte drucken"
 
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
 msgid "Add to selected stock items"
 msgstr "Zu ausgewählten BestandsObjekten hinzufügen"
 
-#: templates/stock_table.html:55
+#: templates/stock_table.html:56
 msgid "Remove from selected stock items"
 msgstr "Von ausgewählten BestandsObjekten entfernen"
 
-#: templates/stock_table.html:56
+#: templates/stock_table.html:57
 msgid "Stocktake selected stock items"
 msgstr "Inventur für gewählte BestandsObjekte"
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move selected stock items"
 msgstr "Ausgewählte BestandsObjekte verschieben"
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move stock"
 msgstr "Bestand verschieben"
 
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order selected items"
 msgstr "Ausgewählte Positionen bestellen"
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change status"
 msgstr "Status ändern"
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change stock status"
 msgstr "Bestandsstatus ändern"
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete selected items"
 msgstr "Ausgewählte Positionen löschen"
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete Stock"
 msgstr "Bestand löschen"
 
@@ -7194,34 +7248,46 @@ msgstr "Berechtigungen"
 msgid "Important dates"
 msgstr "wichtige Daten"
 
-#: users/models.py:167
+#: users/models.py:170
 msgid "Permission set"
 msgstr "Berechtigung geändert"
 
-#: users/models.py:175
+#: users/models.py:178
 msgid "Group"
 msgstr "Gruppe"
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "View"
 msgstr "Ansicht"
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "Permission to view items"
 msgstr "Berechtigung Einträge anzuzeigen"
 
-#: users/models.py:180
+#: users/models.py:183
 msgid "Permission to add items"
 msgstr "Berechtigung Einträge zu erstellen"
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Change"
 msgstr "Ändern"
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Permissions to edit items"
 msgstr "Berechtigungen Einträge zu ändern"
 
-#: users/models.py:184
+#: users/models.py:187
 msgid "Permission to delete items"
 msgstr "Berechtigung Einträge zu löschen"
+
+#~ msgid "Marking this order as complete will remove these line items."
+#~ msgstr "Wenn Sie diese Bestellung als abgeschlossen markieren, werden diese Positionen entfernt."
+
+#~ msgid "Create new purchase order for {{ supplier.name }}"
+#~ msgstr "Neue Bestellung für {{ supplier.name }} anlegen"
+
+#~ msgid "Theme"
+#~ msgstr "Thema"
+
+#~ msgid "Get the App"
+#~ msgstr "App herunterladen"
diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po
index 14192c38d6..097f4c0f8c 100644
--- a/InvenTree/locale/en/LC_MESSAGES/django.po
+++ b/InvenTree/locale/en/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-04-14 11:13+0000\n"
+"POT-Creation-Date: 2021-05-05 17:33+1000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -34,10 +34,10 @@ msgstr ""
 msgid "Enter date"
 msgstr ""
 
-#: InvenTree/forms.py:110 build/forms.py:99 build/forms.py:120
-#: build/forms.py:142 build/forms.py:166 build/forms.py:188 build/forms.py:223
+#: InvenTree/forms.py:110 build/forms.py:102 build/forms.py:123
+#: build/forms.py:145 build/forms.py:169 build/forms.py:185 build/forms.py:227
 #: order/forms.py:27 order/forms.py:38 order/forms.py:49 order/forms.py:60
-#: order/forms.py:71 part/forms.py:132
+#: order/forms.py:71 part/forms.py:134
 msgid "Confirm"
 msgstr ""
 
@@ -49,7 +49,7 @@ msgstr ""
 msgid "Confirm item deletion"
 msgstr ""
 
-#: InvenTree/forms.py:159 templates/registration/login.html:76
+#: InvenTree/forms.py:159 templates/registration/login.html:77
 msgid "Enter password"
 msgstr ""
 
@@ -73,40 +73,41 @@ msgstr ""
 msgid "Select Category"
 msgstr ""
 
-#: InvenTree/helpers.py:361 order/models.py:245 order/models.py:344
-#: stock/views.py:1763
-msgid "Invalid quantity provided"
-msgstr ""
-
-#: InvenTree/helpers.py:364
-msgid "Empty serial number string"
-msgstr ""
-
-#: InvenTree/helpers.py:385
+#: InvenTree/helpers.py:377
 #, python-brace-format
 msgid "Duplicate serial: {n}"
 msgstr ""
 
-#: InvenTree/helpers.py:389 InvenTree/helpers.py:392 InvenTree/helpers.py:395
+#: InvenTree/helpers.py:384 order/models.py:245 order/models.py:353
+#: stock/views.py:1763
+msgid "Invalid quantity provided"
+msgstr ""
+
+#: InvenTree/helpers.py:387
+msgid "Empty serial number string"
+msgstr ""
+
+#: InvenTree/helpers.py:409 InvenTree/helpers.py:412 InvenTree/helpers.py:415
+#: InvenTree/helpers.py:440
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:400
+#: InvenTree/helpers.py:445
 #, python-brace-format
 msgid "Duplicate serial: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:408
+#: InvenTree/helpers.py:453
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:412
+#: InvenTree/helpers.py:457
 #, python-brace-format
 msgid "Number of unique serial number ({s}) must match quantity ({q})"
 msgstr ""
 
-#: InvenTree/models.py:59 stock/models.py:1659
+#: InvenTree/models.py:59 stock/models.py:1662
 msgid "Attachment"
 msgstr ""
 
@@ -122,9 +123,9 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1888
+#: InvenTree/models.py:68 InvenTree/models.py:69 part/models.py:1908
 #: report/templates/report/inventree_test_report_base.html:91
-#: templates/js/stock.js:964
+#: templates/js/stock.js:1041
 msgid "User"
 msgstr ""
 
@@ -133,30 +134,33 @@ msgid "upload date"
 msgstr ""
 
 #: InvenTree/models.py:107 InvenTree/models.py:108 label/models.py:101
-#: part/models.py:686 part/models.py:2029 part/templates/part/params.html:27
-#: report/models.py:179 templates/InvenTree/search.html:136
-#: templates/InvenTree/search.html:273 templates/js/part.js:109
+#: part/models.py:686 part/models.py:2049 part/templates/part/params.html:27
+#: report/models.py:179 templates/InvenTree/search.html:137
+#: templates/InvenTree/search.html:289 templates/js/part.js:110
+#: templates/js/part.js:553 templates/js/stock.js:944
 msgid "Name"
 msgstr ""
 
 #: InvenTree/models.py:114 build/models.py:134
-#: build/templates/build/detail.html:21 company/models.py:365
-#: company/templates/company/detail.html:26
-#: company/templates/company/supplier_part_base.html:70
+#: build/templates/build/detail.html:21 company/models.py:342
+#: company/models.py:494 company/templates/company/detail.html:27
+#: company/templates/company/manufacturer_part_base.html:72
+#: company/templates/company/supplier_part_base.html:71
 #: company/templates/company/supplier_part_detail.html:31 label/models.py:108
-#: order/models.py:101 order/templates/order/purchase_order_detail.html:168
+#: order/models.py:101 order/templates/order/purchase_order_detail.html:143
 #: part/models.py:710 part/templates/part/detail.html:54
 #: part/templates/part/set_category.html:14 report/models.py:192
 #: report/models.py:505 report/models.py:544
 #: report/templates/report/inventree_build_order_base.html:118
-#: templates/InvenTree/search.html:143 templates/InvenTree/search.html:208
-#: templates/InvenTree/search.html:280
+#: templates/InvenTree/search.html:144 templates/InvenTree/search.html:224
+#: templates/InvenTree/search.html:296
 #: templates/InvenTree/settings/header.html:9 templates/js/bom.js:190
-#: templates/js/build.js:677 templates/js/build.js:944
+#: templates/js/build.js:736 templates/js/build.js:1004
 #: templates/js/company.js:56 templates/js/order.js:183
-#: templates/js/order.js:280 templates/js/part.js:168 templates/js/part.js:251
-#: templates/js/part.js:370 templates/js/part.js:566 templates/js/stock.js:554
-#: templates/js/stock.js:938
+#: templates/js/order.js:280 templates/js/part.js:169 templates/js/part.js:252
+#: templates/js/part.js:371 templates/js/part.js:565 templates/js/part.js:643
+#: templates/js/stock.js:554 templates/js/stock.js:956
+#: templates/js/stock.js:1015
 msgid "Description"
 msgstr ""
 
@@ -168,92 +172,92 @@ msgstr ""
 msgid "parent"
 msgstr ""
 
-#: InvenTree/settings.py:480
+#: InvenTree/settings.py:491
 msgid "English"
 msgstr ""
 
-#: InvenTree/settings.py:481
+#: InvenTree/settings.py:492
 msgid "French"
 msgstr ""
 
-#: InvenTree/settings.py:482
+#: InvenTree/settings.py:493
 msgid "German"
 msgstr ""
 
-#: InvenTree/settings.py:483
+#: InvenTree/settings.py:494
 msgid "Polish"
 msgstr ""
 
-#: InvenTree/settings.py:484
+#: InvenTree/settings.py:495
 msgid "Turkish"
 msgstr ""
 
-#: InvenTree/status.py:84
+#: InvenTree/status.py:93
 msgid "Background worker check failed"
 msgstr ""
 
-#: InvenTree/status.py:88
+#: InvenTree/status.py:97
 msgid "Email backend not configured"
 msgstr ""
 
-#: InvenTree/status.py:91
+#: InvenTree/status.py:100
 msgid "InvenTree system health checks failed"
 msgstr ""
 
-#: InvenTree/status_codes.py:94 InvenTree/status_codes.py:135
-#: InvenTree/status_codes.py:228
+#: InvenTree/status_codes.py:102 InvenTree/status_codes.py:143
+#: InvenTree/status_codes.py:236
 msgid "Pending"
 msgstr ""
 
-#: InvenTree/status_codes.py:95
+#: InvenTree/status_codes.py:103
 msgid "Placed"
 msgstr ""
 
-#: InvenTree/status_codes.py:96 InvenTree/status_codes.py:231
+#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:239
 msgid "Complete"
 msgstr ""
 
-#: InvenTree/status_codes.py:97 InvenTree/status_codes.py:137
-#: InvenTree/status_codes.py:230
+#: InvenTree/status_codes.py:105 InvenTree/status_codes.py:145
+#: InvenTree/status_codes.py:238
 msgid "Cancelled"
 msgstr ""
 
-#: InvenTree/status_codes.py:98 InvenTree/status_codes.py:138
-#: InvenTree/status_codes.py:180
+#: InvenTree/status_codes.py:106 InvenTree/status_codes.py:146
+#: InvenTree/status_codes.py:188
 msgid "Lost"
 msgstr ""
 
-#: InvenTree/status_codes.py:99 InvenTree/status_codes.py:139
-#: InvenTree/status_codes.py:182
+#: InvenTree/status_codes.py:107 InvenTree/status_codes.py:147
+#: InvenTree/status_codes.py:190
 msgid "Returned"
 msgstr ""
 
-#: InvenTree/status_codes.py:136
+#: InvenTree/status_codes.py:144
 #: order/templates/order/sales_order_base.html:124
 msgid "Shipped"
 msgstr ""
 
-#: InvenTree/status_codes.py:176
+#: InvenTree/status_codes.py:184
 msgid "OK"
 msgstr ""
 
-#: InvenTree/status_codes.py:177
+#: InvenTree/status_codes.py:185
 msgid "Attention needed"
 msgstr ""
 
-#: InvenTree/status_codes.py:178
+#: InvenTree/status_codes.py:186
 msgid "Damaged"
 msgstr ""
 
-#: InvenTree/status_codes.py:179
+#: InvenTree/status_codes.py:187
 msgid "Destroyed"
 msgstr ""
 
-#: InvenTree/status_codes.py:181
+#: InvenTree/status_codes.py:189
 msgid "Rejected"
 msgstr ""
 
-#: InvenTree/status_codes.py:229
+#: InvenTree/status_codes.py:237
 msgid "Production"
 msgstr ""
 
@@ -312,7 +316,7 @@ msgstr ""
 msgid "Password fields must match"
 msgstr ""
 
-#: InvenTree/views.py:887 templates/navbar.html:85
+#: InvenTree/views.py:887 templates/navbar.html:95
 msgid "System Information"
 msgstr ""
 
@@ -356,138 +360,150 @@ msgstr ""
 msgid "Barcode associated with StockItem"
 msgstr ""
 
-#: build/forms.py:34
+#: build/forms.py:37
 msgid "Build Order reference"
 msgstr ""
 
-#: build/forms.py:35
+#: build/forms.py:38
 msgid "Order target date"
 msgstr ""
 
-#: build/forms.py:39 build/templates/build/build_base.html:104
+#: build/forms.py:42 build/templates/build/build_base.html:136
 #: build/templates/build/detail.html:121 order/forms.py:109 order/forms.py:144
 #: order/templates/order/order_base.html:124
 #: order/templates/order/sales_order_base.html:117
 #: report/templates/report/inventree_build_order_base.html:126
-#: templates/js/build.js:723 templates/js/order.js:200
+#: templates/js/build.js:783 templates/js/order.js:200
 #: templates/js/order.js:298
 msgid "Target Date"
 msgstr ""
 
-#: build/forms.py:40 build/models.py:224
-msgid ""
-"Target date for build completion. Build will be overdue after this date."
+#: build/forms.py:43 build/models.py:224
+msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/forms.py:45 build/forms.py:87 build/forms.py:257 build/models.py:1103
+#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1241
+#: build/templates/build/allocation_card.html:23
 #: build/templates/build/auto_allocate.html:17
-#: build/templates/build/build_base.html:91
-#: build/templates/build/detail.html:31 common/models.py:696
-#: company/forms.py:131 company/templates/company/supplier_part_pricing.html:77
+#: build/templates/build/build_base.html:123
+#: build/templates/build/detail.html:31 common/models.py:703
+#: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77
 #: order/forms.py:188 order/forms.py:205 order/forms.py:239 order/forms.py:261
-#: order/forms.py:278 order/models.py:593 order/models.py:784
+#: order/forms.py:278 order/models.py:603 order/models.py:794
 #: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:193
+#: order/templates/order/purchase_order_detail.html:175
 #: order/templates/order/sales_order_detail.html:70
 #: order/templates/order/sales_order_detail.html:77
 #: order/templates/order/sales_order_detail.html:159
-#: order/templates/order/sales_order_detail.html:224 part/forms.py:340
-#: part/forms.py:369 part/forms.py:385 part/models.py:2158
+#: order/templates/order/sales_order_detail.html:224 part/forms.py:342
+#: part/forms.py:371 part/forms.py:387 part/models.py:2178
 #: part/templates/part/allocation.html:19
 #: part/templates/part/allocation.html:53
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/part_pricing.html:19
+#: part/templates/part/part_pricing.html:11
+#: part/templates/part/part_pricing.html:18
 #: part/templates/part/sale_prices.html:85
 #: report/templates/report/inventree_build_order_base.html:114
 #: report/templates/report/inventree_po_report.html:91
 #: report/templates/report/inventree_so_report.html:91
 #: report/templates/report/inventree_test_report_base.html:77
-#: stock/forms.py:175 stock/forms.py:308 stock/models.py:1563
-#: stock/templates/stock/item_base.html:51
-#: stock/templates/stock/item_base.html:57
-#: stock/templates/stock/item_base.html:240
+#: stock/forms.py:175 stock/forms.py:308 stock/models.py:1566
+#: stock/templates/stock/item_base.html:244
 #: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:364
-#: templates/js/bom.js:205 templates/js/build.js:420 templates/js/build.js:954
-#: templates/js/stock.js:956 templates/js/stock.js:1194
+#: templates/js/bom.js:205 templates/js/build.js:476 templates/js/build.js:1014
+#: templates/js/stock.js:1033 templates/js/stock.js:1271
 msgid "Quantity"
 msgstr ""
 
-#: build/forms.py:46
+#: build/forms.py:49
 msgid "Number of items to build"
 msgstr ""
 
-#: build/forms.py:88
+#: build/forms.py:91
 msgid "Enter quantity for build output"
 msgstr ""
 
-#: build/forms.py:92 order/forms.py:233 stock/forms.py:118
+#: build/forms.py:95 order/forms.py:233 stock/forms.py:118
 msgid "Serial Numbers"
 msgstr ""
 
-#: build/forms.py:94
+#: build/forms.py:97
 msgid "Enter serial numbers for build outputs"
 msgstr ""
 
-#: build/forms.py:100
+#: build/forms.py:103
 msgid "Confirm creation of build output"
 msgstr ""
 
-#: build/forms.py:121
+#: build/forms.py:124
 msgid "Confirm deletion of build output"
 msgstr ""
 
-#: build/forms.py:142
+#: build/forms.py:145
 msgid "Confirm unallocation of stock"
 msgstr ""
 
-#: build/forms.py:166
+#: build/forms.py:169
 msgid "Confirm stock allocation"
 msgstr ""
 
-#: build/forms.py:189
+#: build/forms.py:186
 msgid "Mark build as complete"
 msgstr ""
 
-#: build/forms.py:213 build/templates/build/auto_allocate.html:18
+#: build/forms.py:210 build/templates/build/auto_allocate.html:18
 #: order/forms.py:82 stock/forms.py:347
-#: stock/templates/stock/item_base.html:270
+#: stock/templates/stock/item_base.html:274
 #: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:244 templates/js/barcode.js:363
-#: templates/js/barcode.js:531 templates/js/build.js:434
+#: templates/InvenTree/search.html:260 templates/js/barcode.js:363
+#: templates/js/barcode.js:531 templates/js/build.js:490
 #: templates/js/stock.js:641
 msgid "Location"
 msgstr ""
 
-#: build/forms.py:214
+#: build/forms.py:211
 msgid "Location of completed parts"
 msgstr ""
 
-#: build/forms.py:219
-msgid "Confirm incomplete"
+#: build/forms.py:215 build/templates/build/build_base.html:128
+#: build/templates/build/detail.html:59 order/models.py:455
+#: order/templates/order/receive_parts.html:24
+#: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
+#: templates/js/barcode.js:119 templates/js/build.js:770
+#: templates/js/order.js:187 templates/js/order.js:285
+#: templates/js/stock.js:628 templates/js/stock.js:1279
+msgid "Status"
 msgstr ""
 
-#: build/forms.py:220
-msgid "Confirm completion with incomplete stock allocation"
+#: build/forms.py:216
+msgid "Build output stock status"
 msgstr ""
 
 #: build/forms.py:223
+msgid "Confirm incomplete"
+msgstr ""
+
+#: build/forms.py:224
+msgid "Confirm completion with incomplete stock allocation"
+msgstr ""
+
+#: build/forms.py:227
 msgid "Confirm build completion"
 msgstr ""
 
-#: build/forms.py:243
+#: build/forms.py:252
 msgid "Confirm cancel"
 msgstr ""
 
-#: build/forms.py:243 build/views.py:66
+#: build/forms.py:252 build/views.py:66
 msgid "Confirm build cancellation"
 msgstr ""
 
-#: build/forms.py:257
+#: build/forms.py:266
 msgid "Select quantity of stock to allocate"
 msgstr ""
 
-#: build/models.py:65 build/templates/build/build_base.html:8
-#: build/templates/build/build_base.html:35
+#: build/models.py:65 build/templates/build/build_base.html:9
+#: build/templates/build/build_base.html:63
 #: part/templates/part/allocation.html:23
 #: report/templates/report/inventree_build_order_base.html:106
 msgid "Build Order"
@@ -497,9 +513,9 @@ msgstr ""
 #: build/templates/build/index.html:15 order/templates/order/so_builds.html:12
 #: order/templates/order/so_navbar.html:19
 #: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55
-#: part/templates/part/navbar.html:58 templates/InvenTree/index.html:182
-#: templates/InvenTree/search.html:169
-#: templates/InvenTree/settings/tabs.html:31 users/models.py:41
+#: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183
+#: templates/InvenTree/search.html:185
+#: templates/InvenTree/settings/tabs.html:31 users/models.py:43
 msgid "Build Orders"
 msgstr ""
 
@@ -507,12 +523,12 @@ msgstr ""
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:127 order/models.py:99 order/models.py:595
-#: order/templates/order/purchase_order_detail.html:188
-#: order/templates/order/sales_order_detail.html:219 part/models.py:2167
+#: build/models.py:127 order/models.py:99 order/models.py:605
+#: order/templates/order/purchase_order_detail.html:170
+#: order/templates/order/sales_order_detail.html:219 part/models.py:2187
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197
-#: templates/js/build.js:509 templates/js/build.js:948
+#: templates/js/build.js:565 templates/js/build.js:1008
 msgid "Reference"
 msgstr ""
 
@@ -520,7 +536,7 @@ msgstr ""
 msgid "Brief description of the build"
 msgstr ""
 
-#: build/models.py:146 build/templates/build/build_base.html:121
+#: build/models.py:146 build/templates/build/build_base.html:153
 #: build/templates/build/detail.html:77
 msgid "Parent Build"
 msgstr ""
@@ -530,28 +546,27 @@ msgid "BuildOrder to which this build is allocated"
 msgstr ""
 
 #: build/models.py:152 build/templates/build/auto_allocate.html:16
-#: build/templates/build/build_base.html:86
-#: build/templates/build/detail.html:26 company/models.py:539
-#: order/models.py:637 order/models.py:669
+#: build/templates/build/build_base.html:118
+#: build/templates/build/detail.html:26 company/models.py:688
+#: order/models.py:647 order/models.py:679
 #: order/templates/order/order_wizard/select_parts.html:30
-#: order/templates/order/purchase_order_detail.html:156
+#: order/templates/order/purchase_order_detail.html:131
 #: order/templates/order/receive_parts.html:19
 #: order/templates/order/sales_order_detail.html:207 part/models.py:321
-#: part/models.py:1856 part/models.py:1868 part/models.py:1886
-#: part/models.py:1961 part/models.py:2057 part/models.py:2142
-#: part/templates/part/part_app_base.html:7
-#: part/templates/part/part_pricing.html:15 part/templates/part/related.html:29
+#: part/models.py:1876 part/models.py:1888 part/models.py:1906
+#: part/models.py:1981 part/models.py:2077 part/models.py:2162
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:14 part/templates/part/related.html:29
 #: part/templates/part/set_category.html:13
-#: part/templates/part/subcategories.html:17
 #: report/templates/report/inventree_build_order_base.html:110
 #: report/templates/report/inventree_po_report.html:90
 #: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:111 templates/InvenTree/search.html:194
+#: templates/InvenTree/search.html:112 templates/InvenTree/search.html:210
 #: templates/js/barcode.js:362 templates/js/bom.js:163
-#: templates/js/build.js:681 templates/js/build.js:921
-#: templates/js/company.js:138 templates/js/part.js:232
-#: templates/js/part.js:337 templates/js/stock.js:523
-#: templates/js/stock.js:1266
+#: templates/js/build.js:741 templates/js/build.js:981
+#: templates/js/company.js:140 templates/js/company.js:238
+#: templates/js/part.js:233 templates/js/part.js:338 templates/js/stock.js:523
+#: templates/js/stock.js:1343
 msgid "Part"
 msgstr ""
 
@@ -572,9 +587,7 @@ msgid "Source Location"
 msgstr ""
 
 #: build/models.py:178
-msgid ""
-"Select location to take stock from for this build (leave blank to take from "
-"any stock location)"
+msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
 #: build/models.py:183
@@ -601,7 +614,7 @@ msgstr ""
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:204 part/templates/part/part_base.html:159
+#: build/models.py:204 part/templates/part/part_base.html:160
 msgid "Build Status"
 msgstr ""
 
@@ -609,7 +622,7 @@ msgstr ""
 msgid "Build status code"
 msgstr ""
 
-#: build/models.py:212 stock/models.py:430
+#: build/models.py:212 stock/models.py:432
 msgid "Batch Code"
 msgstr ""
 
@@ -622,11 +635,11 @@ msgstr ""
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:223 order/models.py:451
+#: build/models.py:223 order/models.py:461
 msgid "Target completion date"
 msgstr ""
 
-#: build/models.py:227 order/models.py:218
+#: build/models.py:227 order/models.py:218 templates/js/build.js:788
 msgid "Completion Date"
 msgstr ""
 
@@ -642,7 +655,7 @@ msgstr ""
 msgid "User who issued this build order"
 msgstr ""
 
-#: build/models.py:250 build/templates/build/build_base.html:142
+#: build/models.py:250 build/templates/build/build_base.html:174
 #: build/templates/build/detail.html:105 order/models.py:119
 #: order/templates/order/order_base.html:138
 #: order/templates/order/sales_order_base.html:138 part/models.py:886
@@ -655,33 +668,35 @@ msgid "User responsible for this build order"
 msgstr ""
 
 #: build/models.py:256 build/templates/build/detail.html:91
-#: company/templates/company/supplier_part_base.html:77
+#: company/templates/company/manufacturer_part_base.html:79
+#: company/templates/company/manufacturer_part_detail.html:28
+#: company/templates/company/supplier_part_base.html:78
 #: company/templates/company/supplier_part_detail.html:28
-#: part/templates/part/detail.html:83 part/templates/part/part_base.html:100
-#: stock/models.py:424 stock/templates/stock/item_base.html:330
+#: part/templates/part/detail.html:83 part/templates/part/part_base.html:101
+#: stock/models.py:426 stock/templates/stock/item_base.html:334
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:257 part/models.py:744 stock/models.py:426
+#: build/models.py:257 part/models.py:744 stock/models.py:428
 msgid "Link to external URL"
 msgstr ""
 
-#: build/models.py:261 build/templates/build/navbar.html:59
-#: company/models.py:133 company/models.py:372
-#: company/templates/company/navbar.html:59
-#: company/templates/company/navbar.html:62 order/models.py:123
-#: order/models.py:597 order/templates/order/po_navbar.html:29
+#: build/models.py:261 build/templates/build/navbar.html:53
+#: company/models.py:135 company/models.py:501
+#: company/templates/company/navbar.html:70
+#: company/templates/company/navbar.html:73 order/models.py:123
+#: order/models.py:607 order/templates/order/po_navbar.html:29
 #: order/templates/order/po_navbar.html:32
-#: order/templates/order/purchase_order_detail.html:227
+#: order/templates/order/purchase_order_detail.html:209
 #: order/templates/order/sales_order_detail.html:264
 #: order/templates/order/so_navbar.html:33
 #: order/templates/order/so_navbar.html:36 part/models.py:871
-#: part/templates/part/navbar.html:122
+#: part/templates/part/navbar.html:128
 #: report/templates/report/inventree_build_order_base.html:173
 #: stock/forms.py:173 stock/forms.py:317 stock/forms.py:349 stock/forms.py:377
-#: stock/models.py:496 stock/models.py:1555 stock/models.py:1665
+#: stock/models.py:498 stock/models.py:1558 stock/models.py:1668
 #: stock/templates/stock/navbar.html:57 templates/js/barcode.js:37
-#: templates/js/bom.js:329 templates/js/stock.js:128 templates/js/stock.js:671
+#: templates/js/bom.js:333 templates/js/stock.js:128 templates/js/stock.js:671
 msgid "Notes"
 msgstr ""
 
@@ -689,141 +704,152 @@ msgstr ""
 msgid "Extra build notes"
 msgstr ""
 
-#: build/models.py:673
+#: build/models.py:739
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:676
+#: build/models.py:742
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:679
+#: build/models.py:745
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:754
+#: build/models.py:838
 msgid "Completed build output"
 msgstr ""
 
-#: build/models.py:996
+#: build/models.py:1132
 msgid "BuildItem must be unique for build, stock_item and install_into"
 msgstr ""
 
-#: build/models.py:1018
-msgid "Build item must specify a build output"
+#: build/models.py:1157
+msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1023
+#: build/models.py:1161
 #, python-brace-format
 msgid "Selected stock item not found in BOM for part '{p}'"
 msgstr ""
 
-#: build/models.py:1027
+#: build/models.py:1165
 #, python-brace-format
 msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
 msgstr ""
 
-#: build/models.py:1034 order/models.py:758
+#: build/models.py:1172 order/models.py:768
 msgid "StockItem is over-allocated"
 msgstr ""
 
-#: build/models.py:1038 order/models.py:761
+#: build/models.py:1176 order/models.py:771
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1042
+#: build/models.py:1180
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1082 stock/templates/stock/item_base.html:302
-#: templates/InvenTree/search.html:167 templates/js/build.js:655
+#: build/models.py:1220 stock/templates/stock/item_base.html:306
+#: templates/InvenTree/search.html:183 templates/js/build.js:714
 #: templates/navbar.html:29
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1083
+#: build/models.py:1221
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1090 part/templates/part/allocation.html:18
+#: build/models.py:1228 part/templates/part/allocation.html:18
 #: part/templates/part/allocation.html:24
 #: part/templates/part/allocation.html:31
 #: part/templates/part/allocation.html:49
 #: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:89
-#: stock/templates/stock/item_base.html:324
-#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:771
-#: templates/js/stock.js:927 templates/js/stock.js:1185
+#: stock/templates/stock/item_base.html:93
+#: stock/templates/stock/item_base.html:328
+#: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:831
+#: templates/js/stock.js:1004 templates/js/stock.js:1262
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1091
+#: build/models.py:1229
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1104
+#: build/models.py:1242
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1112
+#: build/models.py:1250
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1113
+#: build/models.py:1251
 msgid "Destination stock item"
 msgstr ""
 
+#: build/templates/build/allocate.html:7
+msgid "Allocate Parts"
+msgstr ""
+
 #: build/templates/build/allocate.html:15
-msgid "Incomplete Build Ouputs"
+msgid "Allocate Stock to Build"
 msgstr ""
 
-#: build/templates/build/allocate.html:21
-msgid "Build order has been completed"
+#: build/templates/build/allocate.html:22
+msgid "Allocate stock to build"
 msgstr ""
 
-#: build/templates/build/allocate.html:26
-msgid "Create new build output"
+#: build/templates/build/allocate.html:23
+msgid "Auto Allocate"
 msgstr ""
 
-#: build/templates/build/allocate.html:27
-msgid "Create New Output"
+#: build/templates/build/allocate.html:25 templates/js/build.js:646
+msgid "Unallocate stock"
 msgstr ""
 
-#: build/templates/build/allocate.html:30
+#: build/templates/build/allocate.html:26 build/views.py:319 build/views.py:805
+msgid "Unallocate Stock"
+msgstr ""
+
+#: build/templates/build/allocate.html:29
 msgid "Order required parts"
 msgstr ""
 
-#: build/templates/build/allocate.html:31
-#: company/templates/company/detail_part.html:31 order/views.py:794
+#: build/templates/build/allocate.html:30
+#: company/templates/company/detail_manufacturer_part.html:33
+#: company/templates/company/detail_supplier_part.html:32 order/views.py:795
 #: part/templates/part/category.html:127
 msgid "Order Parts"
 msgstr ""
 
-#: build/templates/build/allocate.html:34 templates/js/build.js:590
-msgid "Unallocate stock"
+#: build/templates/build/allocate.html:36
+msgid "Untracked stock has been fully allocated for this Build Order"
 msgstr ""
 
-#: build/templates/build/allocate.html:35 build/views.py:338 build/views.py:784
-msgid "Unallocate Stock"
+#: build/templates/build/allocate.html:40
+msgid "Untracked stock has not been fully allocated for this Build Order"
 msgstr ""
 
-#: build/templates/build/allocate.html:49
-msgid "Create a new build output"
+#: build/templates/build/allocate.html:47
+msgid "This Build Order does not have any associated untracked BOM items"
 msgstr ""
 
-#: build/templates/build/allocate.html:50
-msgid "No incomplete build outputs remain."
-msgstr ""
-
-#: build/templates/build/allocate.html:51
-msgid "Create a new build output using the button above"
+#: build/templates/build/allocation_card.html:21
+#: build/templates/build/complete_output.html:46
+#: order/templates/order/sales_order_detail.html:75
+#: order/templates/order/sales_order_detail.html:157
+#: report/templates/report/inventree_test_report_base.html:75
+#: stock/models.py:420 stock/templates/stock/item_base.html:238
+#: templates/js/build.js:474
+msgid "Serial Number"
 msgstr ""
 
 #: build/templates/build/attachments.html:12
-#: build/templates/build/navbar.html:49 build/templates/build/navbar.html:52
+#: build/templates/build/navbar.html:43 build/templates/build/navbar.html:46
 #: order/templates/order/po_navbar.html:26
-#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:113
-#: part/templates/part/navbar.html:116 stock/templates/stock/navbar.html:47
+#: order/templates/order/so_navbar.html:29 part/templates/part/navbar.html:119
+#: part/templates/part/navbar.html:122 stock/templates/stock/navbar.html:47
 #: stock/templates/stock/navbar.html:50
 msgid "Attachments"
 msgstr ""
@@ -833,8 +859,7 @@ msgid "Automatically Allocate Stock"
 msgstr ""
 
 #: build/templates/build/auto_allocate.html:10
-msgid ""
-"The following stock items will be allocated to the specified build output"
+msgid "The following stock items will be allocated to the specified build output"
 msgstr ""
 
 #: build/templates/build/auto_allocate.html:37
@@ -845,112 +870,153 @@ msgstr ""
 msgid "Stock items will have to be manually allocated"
 msgstr ""
 
-#: build/templates/build/build_base.html:14
-msgid "This Build Order is allocated to Sales Order"
+#: build/templates/build/build_base.html:16
+#, python-format
+msgid "This Build Order is allocated to Sales Order %(link)s"
 msgstr ""
 
-#: build/templates/build/build_base.html:19
-msgid "This Build Order is a child of Build Order"
+#: build/templates/build/build_base.html:22
+#, python-format
+msgid "This Build Order is a child of Build Order %(link)s"
 msgstr ""
 
-#: build/templates/build/build_base.html:37
+#: build/templates/build/build_base.html:31
+msgid "Build Order is ready to mark as completed"
+msgstr ""
+
+#: build/templates/build/build_base.html:36
+msgid "Build Order cannot be completed as outstanding outputs remain"
+msgstr ""
+
+#: build/templates/build/build_base.html:41
+msgid "Required build quantity has not yet been completed"
+msgstr ""
+
+#: build/templates/build/build_base.html:46
+msgid "Stock has not been fully allocated to this Build Order"
+msgstr ""
+
+#: build/templates/build/build_base.html:65
 #: company/templates/company/company_base.html:40
-#: company/templates/company/supplier_part_base.html:25
+#: company/templates/company/manufacturer_part_base.html:25
+#: company/templates/company/supplier_part_base.html:26
 #: order/templates/order/order_base.html:26
 #: order/templates/order/sales_order_base.html:35
-#: part/templates/part/category.html:14 part/templates/part/part_base.html:28
-#: stock/templates/stock/item_base.html:114
-#: stock/templates/stock/location.html:24
+#: part/templates/part/category.html:18 part/templates/part/part_base.html:29
+#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/location.html:31
 msgid "Admin view"
 msgstr ""
 
-#: build/templates/build/build_base.html:43
-#: build/templates/build/build_base.html:108
+#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:140
 #: order/templates/order/order_base.html:32
 #: order/templates/order/order_base.html:86
 #: order/templates/order/sales_order_base.html:41
 #: order/templates/order/sales_order_base.html:86
-#: templates/js/table_filters.js:218 templates/js/table_filters.js:237
-#: templates/js/table_filters.js:254
+#: templates/js/table_filters.js:240 templates/js/table_filters.js:259
+#: templates/js/table_filters.js:276
 msgid "Overdue"
 msgstr ""
 
-#: build/templates/build/build_base.html:52
+#: build/templates/build/build_base.html:80
 msgid "Print actions"
 msgstr ""
 
-#: build/templates/build/build_base.html:56
+#: build/templates/build/build_base.html:84
 msgid "Print Build Order"
 msgstr ""
 
-#: build/templates/build/build_base.html:62
-msgid "Build actions"
-msgstr ""
-
-#: build/templates/build/build_base.html:66
-msgid "Edit Build"
-msgstr ""
-
-#: build/templates/build/build_base.html:68
-#: build/templates/build/build_base.html:176
+#: build/templates/build/build_base.html:90
+#: build/templates/build/build_base.html:215
 msgid "Complete Build"
 msgstr ""
 
-#: build/templates/build/build_base.html:69
-#: build/templates/build/build_base.html:167 build/views.py:57
+#: build/templates/build/build_base.html:95
+msgid "Build actions"
+msgstr ""
+
+#: build/templates/build/build_base.html:99
+msgid "Edit Build"
+msgstr ""
+
+#: build/templates/build/build_base.html:101
+#: build/templates/build/build_base.html:199 build/views.py:57
 msgid "Cancel Build"
 msgstr ""
 
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:114
 #: build/templates/build/detail.html:11
 msgid "Build Details"
 msgstr ""
 
-#: build/templates/build/build_base.html:96
-#: build/templates/build/detail.html:59 order/models.py:445
-#: order/templates/order/receive_parts.html:24
-#: stock/templates/stock/item_base.html:376 templates/InvenTree/search.html:236
-#: templates/js/barcode.js:119 templates/js/build.js:710
-#: templates/js/order.js:187 templates/js/order.js:285
-#: templates/js/stock.js:628 templates/js/stock.js:1202
-msgid "Status"
+#: build/templates/build/build_base.html:140
+#, python-format
+msgid "This build was due on %(target)s"
 msgstr ""
 
-#: build/templates/build/build_base.html:108
-msgid "This build was due on"
-msgstr ""
-
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:147
 #: build/templates/build/detail.html:64
 msgid "Progress"
 msgstr ""
 
-#: build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:84 order/models.py:667
+#: build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:84 order/models.py:677
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:33
 #: order/templates/order/sales_order_ship.html:25
 #: part/templates/part/allocation.html:30
 #: report/templates/report/inventree_build_order_base.html:136
 #: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:264 templates/js/order.js:245
+#: stock/templates/stock/item_base.html:268 templates/js/order.js:245
 msgid "Sales Order"
 msgstr ""
 
-#: build/templates/build/build_base.html:135
+#: build/templates/build/build_base.html:167
 #: build/templates/build/detail.html:98
 #: report/templates/report/inventree_build_order_base.html:153
 msgid "Issued By"
 msgstr ""
 
+#: build/templates/build/build_base.html:207
+msgid "Incomplete Outputs"
+msgstr ""
+
+#: build/templates/build/build_base.html:208
+msgid "Build Order cannot be completed as incomplete build outputs remain"
+msgstr ""
+
 #: build/templates/build/build_children.html:10
-#: build/templates/build/navbar.html:42
+#: build/templates/build/navbar.html:36
 msgid "Child Build Orders"
 msgstr ""
 
-#: build/templates/build/build_output.html:10
-#: build/templates/build/navbar.html:35 build/templates/build/navbar.html:38
-msgid "Build Outputs"
+#: build/templates/build/build_output.html:15
+msgid "Incomplete Build Outputs"
+msgstr ""
+
+#: build/templates/build/build_output.html:22
+msgid "Create new build output"
+msgstr ""
+
+#: build/templates/build/build_output.html:23
+msgid "Create New Output"
+msgstr ""
+
+#: build/templates/build/build_output.html:36
+msgid "Create a new build output"
+msgstr ""
+
+#: build/templates/build/build_output.html:37
+msgid "No incomplete build outputs remain."
+msgstr ""
+
+#: build/templates/build/build_output.html:38
+msgid "Create a new build output using the button above"
+msgstr ""
+
+#: build/templates/build/build_output.html:49
+msgid "Completed Build Outputs"
 msgstr ""
 
 #: build/templates/build/build_output_create.html:7
@@ -978,11 +1044,11 @@ msgid "Are you sure you wish to cancel this build?"
 msgstr ""
 
 #: build/templates/build/complete.html:8
-msgid "Build can be completed"
+msgid "Build Order is complete"
 msgstr ""
 
 #: build/templates/build/complete.html:12
-msgid "Build cannot be completed"
+msgid "Build Order is incomplete"
 msgstr ""
 
 #: build/templates/build/complete.html:15
@@ -993,19 +1059,23 @@ msgstr ""
 msgid "Required build quantity has not been completed"
 msgstr ""
 
-#: build/templates/build/complete_output.html:9
-msgid "Stock allocation is complete"
+#: build/templates/build/complete.html:21
+msgid "Required stock has not been fully allocated"
 msgstr ""
 
-#: build/templates/build/complete_output.html:13
+#: build/templates/build/complete_output.html:10
+msgid "Stock allocation is complete for this output"
+msgstr ""
+
+#: build/templates/build/complete_output.html:14
 msgid "Stock allocation is incomplete"
 msgstr ""
 
-#: build/templates/build/complete_output.html:19
-msgid "parts have not been fully allocated"
+#: build/templates/build/complete_output.html:20
+msgid "tracked parts have not been fully allocated"
 msgstr ""
 
-#: build/templates/build/complete_output.html:40
+#: build/templates/build/complete_output.html:41
 msgid "The following items will be created"
 msgstr ""
 
@@ -1014,11 +1084,13 @@ msgid "Select a stock item to allocate to the selected build output"
 msgstr ""
 
 #: build/templates/build/create_build_item.html:11
-msgid "The allocated stock will be installed into the following build output:"
+#, python-format
+msgid "The allocated stock will be installed into the following build output:<br><i>%(output)s</i>"
 msgstr ""
 
-#: build/templates/build/create_build_item.html:19
-msgid "No stock available for"
+#: build/templates/build/create_build_item.html:17
+#, python-format
+msgid "No stock available for %(part)s"
 msgstr ""
 
 #: build/templates/build/delete_build_item.html:8
@@ -1046,15 +1118,15 @@ msgid "Destination location not specified"
 msgstr ""
 
 #: build/templates/build/detail.html:70
-#: stock/templates/stock/item_base.html:288 templates/js/stock.js:636
-#: templates/js/stock.js:1209 templates/js/table_filters.js:85
-#: templates/js/table_filters.js:179
+#: stock/templates/stock/item_base.html:292 templates/js/stock.js:636
+#: templates/js/stock.js:1286 templates/js/table_filters.js:107
+#: templates/js/table_filters.js:201
 msgid "Batch"
 msgstr ""
 
 #: build/templates/build/detail.html:116
 #: order/templates/order/order_base.html:111
-#: order/templates/order/sales_order_base.html:111 templates/js/build.js:718
+#: order/templates/order/sales_order_base.html:111 templates/js/build.js:778
 msgid "Created"
 msgstr ""
 
@@ -1062,8 +1134,7 @@ msgstr ""
 msgid "No target date set"
 msgstr ""
 
-#: build/templates/build/detail.html:132 templates/js/build.js:696
-#: templates/js/build.js:728
+#: build/templates/build/detail.html:132 templates/js/build.js:756
 msgid "Completed"
 msgstr ""
 
@@ -1075,7 +1146,7 @@ msgstr ""
 msgid "Alter the quantity of stock allocated to the build output"
 msgstr ""
 
-#: build/templates/build/index.html:28 build/views.py:657
+#: build/templates/build/index.html:28 build/views.py:678
 msgid "New Build Order"
 msgstr ""
 
@@ -1106,20 +1177,20 @@ msgstr ""
 msgid "Details"
 msgstr ""
 
-#: build/templates/build/navbar.html:20 build/templates/build/navbar.html:23
-#: build/templates/build/parts.html:11
-msgid "Required Parts"
+#: build/templates/build/navbar.html:21 build/templates/build/navbar.html:24
+#: build/views.py:91
+msgid "Allocate Stock"
 msgstr ""
 
-#: build/templates/build/navbar.html:27 build/templates/build/navbar.html:30
-msgid "In Progress"
+#: build/templates/build/navbar.html:29 build/templates/build/navbar.html:32
+msgid "Build Outputs"
 msgstr ""
 
-#: build/templates/build/navbar.html:45
+#: build/templates/build/navbar.html:39
 msgid "Child Builds"
 msgstr ""
 
-#: build/templates/build/navbar.html:56
+#: build/templates/build/navbar.html:50
 msgid "Build Order Notes"
 msgstr ""
 
@@ -1137,7 +1208,7 @@ msgstr ""
 #: build/templates/build/notes.html:26 company/templates/company/notes.html:24
 #: order/templates/order/order_notes.html:27
 #: order/templates/order/sales_order_notes.html:29
-#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:454
+#: part/templates/part/notes.html:27 stock/templates/stock/item_base.html:470
 #: stock/templates/stock/item_notes.html:26
 msgid "Save"
 msgstr ""
@@ -1154,149 +1225,153 @@ msgstr ""
 msgid "Build was cancelled"
 msgstr ""
 
-#: build/views.py:91
-msgid "Allocate Stock"
-msgstr ""
-
-#: build/views.py:154 build/views.py:314 build/views.py:485
-msgid "Build output must be specified"
-msgstr ""
-
-#: build/views.py:168
+#: build/views.py:138
 msgid "Allocated stock to build output"
 msgstr ""
 
-#: build/views.py:180
+#: build/views.py:150
 msgid "Create Build Output"
 msgstr ""
 
-#: build/views.py:203 stock/models.py:966 stock/views.py:1789
+#: build/views.py:168
+msgid "Maximum output quantity is "
+msgstr ""
+
+#: build/views.py:184 stock/models.py:969 stock/views.py:1789
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: build/views.py:212
+#: build/views.py:193
 msgid "Serial numbers required for trackable build output"
 msgstr ""
 
-#: build/views.py:278
+#: build/views.py:259
 msgid "Delete Build Output"
 msgstr ""
 
-#: build/views.py:299 build/views.py:383
+#: build/views.py:280 build/views.py:370
 msgid "Confirm unallocation of build stock"
 msgstr ""
 
-#: build/views.py:300 build/views.py:384 stock/views.py:425
+#: build/views.py:281 build/views.py:371 stock/views.py:425
 msgid "Check the confirmation box"
 msgstr ""
 
-#: build/views.py:312
+#: build/views.py:293
 msgid "Build output does not match build"
 msgstr ""
 
-#: build/views.py:326
+#: build/views.py:295 build/views.py:496
+msgid "Build output must be specified"
+msgstr ""
+
+#: build/views.py:307
 msgid "Build output deleted"
 msgstr ""
 
-#: build/views.py:408
+#: build/views.py:405
 msgid "Complete Build Order"
 msgstr ""
 
-#: build/views.py:414
-msgid "Build order cannot be completed"
+#: build/views.py:411
+msgid "Build order cannot be completed - incomplete outputs remain"
 msgstr ""
 
-#: build/views.py:425
+#: build/views.py:422
 msgid "Completed build order"
 msgstr ""
 
-#: build/views.py:441
+#: build/views.py:438
 msgid "Complete Build Output"
 msgstr ""
 
-#: build/views.py:476
+#: build/views.py:480
+msgid "Invalid stock status value selected"
+msgstr ""
+
+#: build/views.py:487
 msgid "Quantity to complete cannot exceed build output quantity"
 msgstr ""
 
-#: build/views.py:482
+#: build/views.py:493
 msgid "Confirm completion of incomplete build"
 msgstr ""
 
-#: build/views.py:573
+#: build/views.py:592
 msgid "Build output completed"
 msgstr ""
 
-#: build/views.py:711
+#: build/views.py:732
 msgid "Created new build"
 msgstr ""
 
-#: build/views.py:732
+#: build/views.py:753
 msgid "Edit Build Order Details"
 msgstr ""
 
-#: build/views.py:765
+#: build/views.py:786
 msgid "Edited build"
 msgstr ""
 
-#: build/views.py:774
+#: build/views.py:795
 msgid "Delete Build Order"
 msgstr ""
 
-#: build/views.py:789
+#: build/views.py:810
 msgid "Removed parts from build allocation"
 msgstr ""
 
-#: build/views.py:801
+#: build/views.py:822
 msgid "Allocate stock to build output"
 msgstr ""
 
-#: build/views.py:844
+#: build/views.py:865
 msgid "Item must be currently in stock"
 msgstr ""
 
-#: build/views.py:850
+#: build/views.py:871
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/views.py:851 templates/js/bom.js:230 templates/js/build.js:519
-#: templates/js/build.js:778 templates/js/build.js:961
+#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:575
+#: templates/js/build.js:838 templates/js/build.js:1021
 msgid "Available"
 msgstr ""
 
-#: build/views.py:853
+#: build/views.py:874
 msgid "Stock item must be selected"
 msgstr ""
 
-#: build/views.py:1016
+#: build/views.py:1037
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: build/views.py:1020
+#: build/views.py:1041
 msgid "Updated Build Item"
 msgstr ""
 
-#: build/views.py:1049
+#: build/views.py:1070
 msgid "Add Build Order Attachment"
 msgstr ""
 
-#: build/views.py:1062 order/views.py:110 order/views.py:162 part/views.py:172
+#: build/views.py:1083 order/views.py:110 order/views.py:162 part/views.py:172
 #: stock/views.py:277
 msgid "Added attachment"
 msgstr ""
 
-#: build/views.py:1098 order/views.py:189 order/views.py:210
+#: build/views.py:1119 order/views.py:189 order/views.py:210
 msgid "Edit Attachment"
 msgstr ""
 
-#: build/views.py:1108 order/views.py:193 order/views.py:214
+#: build/views.py:1129 order/views.py:193 order/views.py:214
 msgid "Attachment updated"
 msgstr ""
 
-#: build/views.py:1118 order/views.py:229 order/views.py:243
+#: build/views.py:1139 order/views.py:229 order/views.py:243
 msgid "Delete Attachment"
 msgstr ""
 
-#: build/views.py:1123 order/views.py:235 order/views.py:249 stock/views.py:333
+#: build/views.py:1144 order/views.py:235 order/views.py:249 stock/views.py:333
 msgid "Deleted attachment"
 msgstr ""
 
@@ -1308,335 +1383,343 @@ msgstr ""
 msgid "String descriptor for the server instance"
 msgstr ""
 
-#: common/models.py:62 company/models.py:95 company/models.py:96
-msgid "Company name"
+#: common/models.py:62
+msgid "Use instance name"
 msgstr ""
 
 #: common/models.py:63
+msgid "Use the instance name in the title-bar"
+msgstr ""
+
+#: common/models.py:69 company/models.py:97 company/models.py:98
+msgid "Company name"
+msgstr ""
+
+#: common/models.py:70
 msgid "Internal company name"
 msgstr ""
 
-#: common/models.py:68
+#: common/models.py:75
 msgid "Base URL"
 msgstr ""
 
-#: common/models.py:69
+#: common/models.py:76
 msgid "Base URL for server instance"
 msgstr ""
 
-#: common/models.py:75
+#: common/models.py:82
 msgid "Default Currency"
 msgstr ""
 
-#: common/models.py:76
+#: common/models.py:83
 msgid "Default currency"
 msgstr ""
 
-#: common/models.py:82
+#: common/models.py:89
 msgid "Download from URL"
 msgstr ""
 
-#: common/models.py:83
+#: common/models.py:90
 msgid "Allow download of remote images and files from external URL"
 msgstr ""
 
-#: common/models.py:89
+#: common/models.py:96
 msgid "Barcode Support"
 msgstr ""
 
-#: common/models.py:90
+#: common/models.py:97
 msgid "Enable barcode scanner support"
 msgstr ""
 
-#: common/models.py:96
+#: common/models.py:103
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:97
+#: common/models.py:104
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:101
+#: common/models.py:108
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:102
+#: common/models.py:109
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:108
+#: common/models.py:115
 msgid "Allow Editing IPN"
 msgstr ""
 
-#: common/models.py:109
+#: common/models.py:116
 msgid "Allow changing the IPN value while editing a part"
 msgstr ""
 
-#: common/models.py:115
+#: common/models.py:122
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:116
+#: common/models.py:123
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:122
+#: common/models.py:129
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:123
+#: common/models.py:130
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:129
+#: common/models.py:136
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:130
+#: common/models.py:137
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:136
+#: common/models.py:143
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:137
+#: common/models.py:144
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:143
+#: common/models.py:150
 msgid "Recent Part Count"
 msgstr ""
 
-#: common/models.py:144
+#: common/models.py:151
 msgid "Number of recent parts to display on index page"
 msgstr ""
 
-#: common/models.py:150 part/models.py:2059 part/templates/part/detail.html:160
+#: common/models.py:157 part/models.py:2079 part/templates/part/detail.html:160
 #: report/models.py:185 stock/forms.py:259 templates/js/table_filters.js:24
-#: templates/js/table_filters.js:288
+#: templates/js/table_filters.js:310
 msgid "Template"
 msgstr ""
 
-#: common/models.py:151
+#: common/models.py:158
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:157 part/models.py:834 part/templates/part/detail.html:170
-#: templates/js/table_filters.js:101 templates/js/table_filters.js:300
+#: common/models.py:164 part/models.py:834 part/templates/part/detail.html:170
+#: templates/js/table_filters.js:123 templates/js/table_filters.js:322
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:158
+#: common/models.py:165
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:164 part/models.py:840 part/templates/part/detail.html:180
-#: templates/js/table_filters.js:304
+#: common/models.py:171 part/models.py:840 part/templates/part/detail.html:180
+#: templates/js/table_filters.js:326
 msgid "Component"
 msgstr ""
 
-#: common/models.py:165
+#: common/models.py:172
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:171 part/models.py:851 part/templates/part/detail.html:200
+#: common/models.py:178 part/models.py:851 part/templates/part/detail.html:200
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:172
+#: common/models.py:179
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:178 part/models.py:856 part/templates/part/detail.html:210
-#: templates/js/table_filters.js:312
+#: common/models.py:185 part/models.py:856 part/templates/part/detail.html:210
+#: templates/js/table_filters.js:334
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:179
+#: common/models.py:186
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:185 part/models.py:846 part/templates/part/detail.html:190
-#: templates/js/table_filters.js:32 templates/js/table_filters.js:316
+#: common/models.py:192 part/models.py:846 part/templates/part/detail.html:190
+#: templates/js/table_filters.js:32 templates/js/table_filters.js:338
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:186
+#: common/models.py:193
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:192 part/models.py:866 part/templates/part/detail.html:150
+#: common/models.py:199 part/models.py:866 part/templates/part/detail.html:150
 #: templates/js/table_filters.js:28
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:193
+#: common/models.py:200
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:199
+#: common/models.py:206
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:200
+#: common/models.py:207
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:206
+#: common/models.py:213
 msgid "Debug Mode"
 msgstr ""
 
-#: common/models.py:207
+#: common/models.py:214
 msgid "Generate reports in debug mode (HTML output)"
 msgstr ""
 
-#: common/models.py:213
+#: common/models.py:220
 msgid "Page Size"
 msgstr ""
 
-#: common/models.py:214
+#: common/models.py:221
 msgid "Default page size for PDF reports"
 msgstr ""
 
-#: common/models.py:224
+#: common/models.py:231
 msgid "Test Reports"
 msgstr ""
 
-#: common/models.py:225
+#: common/models.py:232
 msgid "Enable generation of test reports"
 msgstr ""
 
-#: common/models.py:231
+#: common/models.py:238
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:232
+#: common/models.py:239
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:238
+#: common/models.py:245
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:239
+#: common/models.py:246
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:245
+#: common/models.py:252
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:246
+#: common/models.py:253
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:248 part/templates/part/detail.html:121
+#: common/models.py:255 part/templates/part/detail.html:121
 msgid "days"
 msgstr ""
 
-#: common/models.py:253
+#: common/models.py:260
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:254
+#: common/models.py:261
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:260
+#: common/models.py:267
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:261
+#: common/models.py:268
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:267
+#: common/models.py:274
 msgid "Group by Part"
 msgstr ""
 
-#: common/models.py:268
+#: common/models.py:275
 msgid "Group stock items by part reference in table views"
 msgstr ""
 
-#: common/models.py:274
+#: common/models.py:281
 msgid "Recent Stock Count"
 msgstr ""
 
-#: common/models.py:275
+#: common/models.py:282
 msgid "Number of recent stock items to display on index page"
 msgstr ""
 
-#: common/models.py:281
+#: common/models.py:288
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:282
+#: common/models.py:289
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:287
+#: common/models.py:294
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:288
+#: common/models.py:295
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:292
+#: common/models.py:299
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:293
+#: common/models.py:300
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:298
+#: common/models.py:305
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:299
+#: common/models.py:306
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:522
+#: common/models.py:529
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:524
+#: common/models.py:531
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:559
+#: common/models.py:566
 msgid "Must be an integer value"
 msgstr ""
 
-#: common/models.py:582
+#: common/models.py:589
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:593
+#: common/models.py:600
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:616
+#: common/models.py:623
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:697 company/forms.py:132
+#: common/models.py:704 company/forms.py:177
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:705 company/templates/company/supplier_part_pricing.html:82
+#: common/models.py:712 company/templates/company/supplier_part_pricing.html:82
 #: part/templates/part/sale_prices.html:90 templates/js/bom.js:255
 msgid "Price"
 msgstr ""
 
-#: common/models.py:706
+#: common/models.py:713
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:729
+#: common/models.py:736
 msgid "Default"
 msgstr ""
 
@@ -1656,224 +1739,253 @@ msgstr ""
 msgid "Supplied value must be a boolean"
 msgstr ""
 
-#: company/forms.py:37 company/models.py:143
-#: company/templates/company/detail.html:40
+#: company/forms.py:38 company/models.py:145
+#: company/templates/company/detail.html:42
 msgid "Currency"
 msgstr ""
 
-#: company/forms.py:38 company/models.py:145
+#: company/forms.py:39 company/models.py:147
 msgid "Default currency used for this company"
 msgstr ""
 
-#: company/forms.py:76 part/forms.py:46
+#: company/forms.py:77 part/forms.py:46
 msgid "URL"
 msgstr ""
 
-#: company/forms.py:77 part/forms.py:47
+#: company/forms.py:78 part/forms.py:47
 msgid "Image URL"
 msgstr ""
 
-#: company/forms.py:99
+#: company/forms.py:118
 msgid "Single Price"
 msgstr ""
 
-#: company/forms.py:101
+#: company/forms.py:120
 msgid "Single quantity price"
 msgstr ""
 
-#: company/models.py:100
-msgid "Company description"
-msgstr ""
-
-#: company/models.py:101
-msgid "Description of the company"
-msgstr ""
-
-#: company/models.py:105 company/templates/company/company_base.html:70
-#: company/templates/company/detail.html:31 templates/js/company.js:60
-msgid "Website"
-msgstr ""
-
-#: company/models.py:105
-msgid "Company website URL"
-msgstr ""
-
-#: company/models.py:108 company/templates/company/company_base.html:77
-msgid "Address"
-msgstr ""
-
-#: company/models.py:109
-msgid "Company address"
-msgstr ""
-
-#: company/models.py:112
-msgid "Phone number"
-msgstr ""
-
-#: company/models.py:113
-msgid "Contact phone number"
-msgstr ""
-
-#: company/models.py:116 company/templates/company/company_base.html:91
-msgid "Email"
-msgstr ""
-
-#: company/models.py:116
-msgid "Contact email address"
-msgstr ""
-
-#: company/models.py:119 company/templates/company/company_base.html:98
-msgid "Contact"
-msgstr ""
-
-#: company/models.py:120
-msgid "Point of contact"
-msgstr ""
-
-#: company/models.py:122 company/models.py:359 order/models.py:103
-#: part/models.py:743
-#: report/templates/report/inventree_build_order_base.html:165
-#: stock/models.py:1557 templates/js/company.js:208 templates/js/part.js:430
-msgid "Link"
-msgstr ""
-
-#: company/models.py:122
-msgid "Link to external company information"
-msgstr ""
-
-#: company/models.py:130 part/models.py:753
-msgid "Image"
-msgstr ""
-
-#: company/models.py:135
-msgid "is customer"
-msgstr ""
-
-#: company/models.py:135
-msgid "Do you sell items to this company?"
-msgstr ""
-
-#: company/models.py:137
-msgid "is supplier"
-msgstr ""
-
-#: company/models.py:137
-msgid "Do you purchase items from this company?"
-msgstr ""
-
-#: company/models.py:139
-msgid "is manufacturer"
-msgstr ""
-
-#: company/models.py:139
-msgid "Does this company manufacture parts?"
-msgstr ""
-
-#: company/models.py:319 stock/models.py:371
-#: stock/templates/stock/item_base.html:220
-msgid "Base Part"
-msgstr ""
-
-#: company/models.py:323 order/views.py:1372
-msgid "Select part"
-msgstr ""
-
-#: company/models.py:329 company/templates/company/detail.html:60
-#: company/templates/company/supplier_part_base.html:83
-#: company/templates/company/supplier_part_detail.html:25 order/models.py:190
-#: order/templates/order/order_base.html:92
-#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:170
-#: stock/templates/stock/item_base.html:337 templates/js/company.js:48
-#: templates/js/company.js:164 templates/js/order.js:170
-msgid "Supplier"
-msgstr ""
-
-#: company/models.py:330
-msgid "Select supplier"
-msgstr ""
-
-#: company/models.py:335 company/templates/company/supplier_part_base.html:87
-#: company/templates/company/supplier_part_detail.html:26
-#: order/templates/order/purchase_order_detail.html:174 part/bom.py:171
-msgid "SKU"
-msgstr ""
-
-#: company/models.py:336
-msgid "Supplier stock keeping unit"
-msgstr ""
-
-#: company/models.py:346 company/templates/company/detail.html:55
-#: company/templates/company/supplier_part_base.html:93
-#: company/templates/company/supplier_part_detail.html:34 part/bom.py:172
-#: templates/js/company.js:44 templates/js/company.js:188
-msgid "Manufacturer"
-msgstr ""
-
-#: company/models.py:347
+#: company/forms.py:128 company/models.py:324
 msgid "Select manufacturer"
 msgstr ""
 
-#: company/models.py:353 company/templates/company/supplier_part_base.html:99
+#: company/forms.py:134 company/models.py:331
+msgid "Manufacturer Part Number"
+msgstr ""
+
+#: company/forms.py:136 company/models.py:330
+#: company/templates/company/manufacturer_part_base.html:89
+#: company/templates/company/manufacturer_part_detail.html:26
+#: company/templates/company/supplier_part_base.html:101
 #: company/templates/company/supplier_part_detail.html:35
-#: order/templates/order/purchase_order_detail.html:183 part/bom.py:173
-#: templates/js/company.js:204
+#: order/templates/order/purchase_order_detail.html:158 part/bom.py:171
+#: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307
 msgid "MPN"
 msgstr ""
 
-#: company/models.py:354
-msgid "Manufacturer part number"
+#: company/models.py:102
+msgid "Company description"
 msgstr ""
 
-#: company/models.py:360
+#: company/models.py:103
+msgid "Description of the company"
+msgstr ""
+
+#: company/models.py:107 company/templates/company/company_base.html:70
+#: company/templates/company/detail.html:33 templates/js/company.js:60
+msgid "Website"
+msgstr ""
+
+#: company/models.py:107
+msgid "Company website URL"
+msgstr ""
+
+#: company/models.py:110 company/templates/company/company_base.html:77
+msgid "Address"
+msgstr ""
+
+#: company/models.py:111
+msgid "Company address"
+msgstr ""
+
+#: company/models.py:114
+msgid "Phone number"
+msgstr ""
+
+#: company/models.py:115
+msgid "Contact phone number"
+msgstr ""
+
+#: company/models.py:118 company/templates/company/company_base.html:91
+msgid "Email"
+msgstr ""
+
+#: company/models.py:118
+msgid "Contact email address"
+msgstr ""
+
+#: company/models.py:121 company/templates/company/company_base.html:98
+msgid "Contact"
+msgstr ""
+
+#: company/models.py:122
+msgid "Point of contact"
+msgstr ""
+
+#: company/models.py:124 company/models.py:336 company/models.py:488
+#: order/models.py:103 part/models.py:743
+#: report/templates/report/inventree_build_order_base.html:165
+#: stock/models.py:1560 templates/js/company.js:188 templates/js/company.js:318
+#: templates/js/part.js:431
+msgid "Link"
+msgstr ""
+
+#: company/models.py:124
+msgid "Link to external company information"
+msgstr ""
+
+#: company/models.py:132 part/models.py:753
+msgid "Image"
+msgstr ""
+
+#: company/models.py:137
+msgid "is customer"
+msgstr ""
+
+#: company/models.py:137
+msgid "Do you sell items to this company?"
+msgstr ""
+
+#: company/models.py:139
+msgid "is supplier"
+msgstr ""
+
+#: company/models.py:139
+msgid "Do you purchase items from this company?"
+msgstr ""
+
+#: company/models.py:141
+msgid "is manufacturer"
+msgstr ""
+
+#: company/models.py:141
+msgid "Does this company manufacture parts?"
+msgstr ""
+
+#: company/models.py:308 company/models.py:459 stock/models.py:373
+#: stock/templates/stock/item_base.html:224
+msgid "Base Part"
+msgstr ""
+
+#: company/models.py:312 company/models.py:463 order/views.py:1384
+msgid "Select part"
+msgstr ""
+
+#: company/models.py:323 company/templates/company/detail.html:57
+#: company/templates/company/manufacturer_part_base.html:85
+#: company/templates/company/manufacturer_part_detail.html:25
+#: company/templates/company/supplier_part_base.html:94
+#: company/templates/company/supplier_part_detail.html:34 part/bom.py:170
+#: part/bom.py:241 stock/templates/stock/item_base.html:341
+#: templates/js/company.js:44 templates/js/company.js:165
+#: templates/js/company.js:289
+msgid "Manufacturer"
+msgstr ""
+
+#: company/models.py:337
+msgid "URL for external manufacturer part link"
+msgstr ""
+
+#: company/models.py:343
+msgid "Manufacturer part description"
+msgstr ""
+
+#: company/models.py:469 company/templates/company/detail.html:62
+#: company/templates/company/supplier_part_base.html:84
+#: company/templates/company/supplier_part_detail.html:25 order/models.py:190
+#: order/templates/order/order_base.html:92
+#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:175
+#: part/bom.py:286 stock/templates/stock/item_base.html:353
+#: templates/js/company.js:48 templates/js/company.js:263
+#: templates/js/order.js:170
+msgid "Supplier"
+msgstr ""
+
+#: company/models.py:470
+msgid "Select supplier"
+msgstr ""
+
+#: company/models.py:475 company/templates/company/supplier_part_base.html:88
+#: company/templates/company/supplier_part_detail.html:26
+#: order/templates/order/purchase_order_detail.html:149 part/bom.py:176
+#: part/bom.py:287
+msgid "SKU"
+msgstr ""
+
+#: company/models.py:476
+msgid "Supplier stock keeping unit"
+msgstr ""
+
+#: company/models.py:482
+#: company/templates/company/manufacturer_part_base.html:6
+#: company/templates/company/manufacturer_part_base.html:19
+#: stock/templates/stock/item_base.html:346
+msgid "Manufacturer Part"
+msgstr ""
+
+#: company/models.py:483
+msgid "Select manufacturer part"
+msgstr ""
+
+#: company/models.py:489
 msgid "URL for external supplier part link"
 msgstr ""
 
-#: company/models.py:366
+#: company/models.py:495
 msgid "Supplier part description"
 msgstr ""
 
-#: company/models.py:371 company/templates/company/supplier_part_base.html:113
-#: company/templates/company/supplier_part_detail.html:38 part/models.py:2170
+#: company/models.py:500 company/templates/company/supplier_part_base.html:115
+#: company/templates/company/supplier_part_detail.html:38 part/models.py:2190
 #: report/templates/report/inventree_po_report.html:93
 #: report/templates/report/inventree_so_report.html:93
 msgid "Note"
 msgstr ""
 
-#: company/models.py:375
+#: company/models.py:504
 msgid "base cost"
 msgstr ""
 
-#: company/models.py:375
+#: company/models.py:504
 msgid "Minimum charge (e.g. stocking fee)"
 msgstr ""
 
-#: company/models.py:377 company/templates/company/supplier_part_base.html:106
-#: stock/models.py:395 stock/templates/stock/item_base.html:295
+#: company/models.py:506 company/templates/company/supplier_part_base.html:108
+#: stock/models.py:397 stock/templates/stock/item_base.html:299
 #: templates/js/stock.js:667
 msgid "Packaging"
 msgstr ""
 
-#: company/models.py:377
+#: company/models.py:506
 msgid "Part packaging"
 msgstr ""
 
-#: company/models.py:379
+#: company/models.py:508
 msgid "multiple"
 msgstr ""
 
-#: company/models.py:379
+#: company/models.py:508
 msgid "Order multiple"
 msgstr ""
 
 #: company/templates/company/assigned_stock.html:10
-#: company/templates/company/navbar.html:51
-#: company/templates/company/navbar.html:54 templates/js/build.js:411
+#: company/templates/company/navbar.html:62
+#: company/templates/company/navbar.html:65 templates/js/build.js:467
 msgid "Assigned Stock"
 msgstr ""
 
 #: company/templates/company/company_base.html:9
 #: company/templates/company/company_base.html:35
-#: templates/InvenTree/search.html:288 templates/js/company.js:33
+#: templates/InvenTree/search.html:304 templates/js/company.js:33
 msgid "Company"
 msgstr ""
 
@@ -1895,7 +2007,7 @@ msgstr ""
 msgid "Edit company information"
 msgstr ""
 
-#: company/templates/company/company_base.html:56 company/views.py:324
+#: company/templates/company/company_base.html:56 company/views.py:326
 msgid "Delete Company"
 msgstr ""
 
@@ -1918,91 +2030,87 @@ msgstr ""
 #, python-format
 msgid ""
 "There are %(count)s parts sourced from this company.<br>\n"
-"If this supplier is deleted, these supplier part entries will also be "
-"deleted."
+"If this supplier is deleted, these supplier part entries will also be deleted."
 msgstr ""
 
 #: company/templates/company/detail.html:21
 msgid "Company Name"
 msgstr ""
 
-#: company/templates/company/detail.html:34
+#: company/templates/company/detail.html:36
 msgid "No website specified"
 msgstr ""
 
-#: company/templates/company/detail.html:43
+#: company/templates/company/detail.html:45
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/detail.html:65 order/models.py:440
-#: order/templates/order/sales_order_base.html:92 stock/models.py:413
-#: stock/models.py:414 stock/templates/stock/item_base.html:247
+#: company/templates/company/detail.html:67 order/models.py:450
+#: order/templates/order/sales_order_base.html:92 stock/models.py:415
+#: stock/models.py:416 stock/templates/stock/item_base.html:251
 #: templates/js/company.js:40 templates/js/order.js:267
 msgid "Customer"
 msgstr ""
 
-#: company/templates/company/detail_part.html:10
-#: templates/InvenTree/search.html:148
-msgid "Supplier Parts"
+#: company/templates/company/detail_manufacturer_part.html:11
+#: templates/InvenTree/search.html:149
+msgid "Manufacturer Parts"
 msgstr ""
 
-#: company/templates/company/detail_part.html:20
-#: order/templates/order/order_wizard/select_parts.html:42
-#: order/templates/order/purchase_order_detail.html:75
-msgid "Create new supplier part"
+#: company/templates/company/detail_manufacturer_part.html:22
+msgid "Create new manufacturer part"
 msgstr ""
 
-#: company/templates/company/detail_part.html:21
-#: order/templates/order/purchase_order_detail.html:74
-#: part/templates/part/supplier.html:17 templates/js/stock.js:1086
-msgid "New Supplier Part"
+#: company/templates/company/detail_manufacturer_part.html:23
+#: part/templates/part/manufacturer.html:19
+msgid "New Manufacturer Part"
 msgstr ""
 
-#: company/templates/company/detail_part.html:26
-#: part/templates/part/category.html:122 part/templates/part/supplier.html:20
+#: company/templates/company/detail_manufacturer_part.html:28
+#: company/templates/company/detail_supplier_part.html:27
+#: company/templates/company/manufacturer_part_suppliers.html:20
+#: part/templates/part/category.html:122
+#: part/templates/part/manufacturer.html:22
+#: part/templates/part/supplier.html:20
 msgid "Options"
 msgstr ""
 
-#: company/templates/company/detail_part.html:31
+#: company/templates/company/detail_manufacturer_part.html:33
+#: company/templates/company/detail_supplier_part.html:32
 #: part/templates/part/category.html:127
 msgid "Order parts"
 msgstr ""
 
-#: company/templates/company/detail_part.html:34
+#: company/templates/company/detail_manufacturer_part.html:36
+#: company/templates/company/detail_supplier_part.html:35
 msgid "Delete parts"
 msgstr ""
 
-#: company/templates/company/detail_part.html:34
+#: company/templates/company/detail_manufacturer_part.html:36
+#: company/templates/company/detail_supplier_part.html:35
 msgid "Delete Parts"
 msgstr ""
 
-#: company/templates/company/detail_part.html:66
+#: company/templates/company/detail_manufacturer_part.html:66
+#: company/templates/company/detail_supplier_part.html:66
 #: part/templates/part/bom.html:159 part/templates/part/category.html:118
-#: templates/js/stock.js:1080
+#: templates/js/stock.js:1157
 msgid "New Part"
 msgstr ""
 
-#: company/templates/company/detail_part.html:67
+#: company/templates/company/detail_manufacturer_part.html:67
+#: company/templates/company/detail_supplier_part.html:67
 msgid "Create new Part"
 msgstr ""
 
-#: company/templates/company/detail_part.html:72 company/views.py:62
-#: order/templates/order/purchase_orders.html:183
-#: part/templates/part/supplier.html:50
-msgid "New Supplier"
-msgstr ""
-
-#: company/templates/company/detail_part.html:73 company/views.py:279
-#: order/templates/order/purchase_orders.html:184
-msgid "Create new Supplier"
-msgstr ""
-
-#: company/templates/company/detail_part.html:78 company/views.py:69
+#: company/templates/company/detail_manufacturer_part.html:72
+#: company/views.py:71 part/templates/part/manufacturer.html:52
 #: part/templates/part/supplier.html:56
 msgid "New Manufacturer"
 msgstr ""
 
-#: company/templates/company/detail_part.html:79 company/views.py:282
+#: company/templates/company/detail_manufacturer_part.html:73
+#: company/views.py:284
 msgid "Create new Manufacturer"
 msgstr ""
 
@@ -2017,68 +2125,172 @@ msgstr ""
 msgid "Export"
 msgstr ""
 
-#: company/templates/company/index.html:7
+#: company/templates/company/detail_supplier_part.html:11
+#: company/templates/company/manufacturer_part_navbar.html:11
+#: company/templates/company/manufacturer_part_suppliers.html:10
+#: templates/InvenTree/search.html:164
+msgid "Supplier Parts"
+msgstr ""
+
+#: company/templates/company/detail_supplier_part.html:21
+#: order/templates/order/order_wizard/select_parts.html:42
+#: order/templates/order/purchase_order_detail.html:50
+msgid "Create new supplier part"
+msgstr ""
+
+#: company/templates/company/detail_supplier_part.html:22
+#: company/templates/company/manufacturer_part_suppliers.html:17
+#: order/templates/order/purchase_order_detail.html:49
+#: part/templates/part/supplier.html:17 templates/js/stock.js:1163
+msgid "New Supplier Part"
+msgstr ""
+
+#: company/templates/company/detail_supplier_part.html:72
+#: company/templates/company/manufacturer_part_suppliers.html:47
+#: company/views.py:64 order/templates/order/purchase_orders.html:183
+#: part/templates/part/supplier.html:50
+msgid "New Supplier"
+msgstr ""
+
+#: company/templates/company/detail_supplier_part.html:73 company/views.py:281
+#: order/templates/order/purchase_orders.html:184
+msgid "Create new Supplier"
+msgstr ""
+
+#: company/templates/company/index.html:8
 msgid "Supplier List"
 msgstr ""
 
-#: company/templates/company/navbar.html:20
-msgid "Supplied Parts"
+#: company/templates/company/manufacturer_part_base.html:36
+#: company/templates/company/supplier_part_base.html:36
+#: company/templates/company/supplier_part_orders.html:17
+#: part/templates/part/orders.html:17 part/templates/part/part_base.html:65
+msgid "Order part"
 msgstr ""
 
-#: company/templates/company/navbar.html:23
-#: order/templates/order/receive_parts.html:14 part/models.py:322
-#: part/templates/part/cat_link.html:7 part/templates/part/category.html:95
-#: part/templates/part/category_navbar.html:11
-#: part/templates/part/category_navbar.html:14
-#: part/templates/part/category_partlist.html:10
-#: templates/InvenTree/index.html:96 templates/InvenTree/search.html:113
-#: templates/InvenTree/settings/tabs.html:25 templates/navbar.html:23
-#: templates/stats.html:59 templates/stats.html:68 users/models.py:38
-msgid "Parts"
+#: company/templates/company/manufacturer_part_base.html:41
+msgid "Edit manufacturer part"
 msgstr ""
 
-#: company/templates/company/navbar.html:27 part/templates/part/navbar.html:33
-#: stock/templates/stock/location.html:100
-#: stock/templates/stock/location.html:115 templates/InvenTree/search.html:182
-#: templates/stats.html:72 templates/stats.html:81 users/models.py:40
-msgid "Stock Items"
+#: company/templates/company/manufacturer_part_base.html:45
+msgid "Delete manufacturer part"
 msgstr ""
 
-#: company/templates/company/navbar.html:30
-#: company/templates/company/part_navbar.html:14
-#: part/templates/part/navbar.html:36 stock/templates/stock/loc_link.html:7
-#: stock/templates/stock/location.html:29
-#: stock/templates/stock/stock_app_base.html:9
-#: templates/InvenTree/index.html:127 templates/InvenTree/search.html:180
-#: templates/InvenTree/search.html:216
-#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:172
-#: templates/js/part.js:397 templates/js/stock.js:563 templates/navbar.html:26
+#: company/templates/company/manufacturer_part_base.html:57
+#: company/templates/company/manufacturer_part_detail.html:10
+msgid "Manufacturer Part Details"
+msgstr ""
+
+#: company/templates/company/manufacturer_part_base.html:62
+#: company/templates/company/manufacturer_part_detail.html:18
+#: company/templates/company/supplier_part_base.html:61
+#: company/templates/company/supplier_part_detail.html:18
+msgid "Internal Part"
+msgstr ""
+
+#: company/templates/company/manufacturer_part_delete.html:6
+msgid "Are you sure you want to delete the following Manufacturer Parts?"
+msgstr ""
+
+#: company/templates/company/manufacturer_part_delete.html:36
+#, python-format
+msgid "There are %(count)s suppliers defined for this manufacturer part. If you delete it, the following supplier parts will also be deleted:"
+msgstr ""
+
+#: company/templates/company/manufacturer_part_navbar.html:14
+#: company/views.py:63 part/templates/part/navbar.html:78
+#: part/templates/part/navbar.html:81 templates/InvenTree/search.html:316
+#: templates/navbar.html:35
+msgid "Suppliers"
+msgstr ""
+
+#: company/templates/company/manufacturer_part_navbar.html:19
+msgid "Manufacturer Part Stock"
+msgstr ""
+
+#: company/templates/company/manufacturer_part_navbar.html:22
+#: company/templates/company/navbar.html:41
+#: company/templates/company/supplier_part_navbar.html:15
+#: part/templates/part/navbar.html:36 stock/api.py:51
+#: stock/templates/stock/loc_link.html:7 stock/templates/stock/location.html:36
+#: stock/templates/stock/stock_app_base.html:10
+#: templates/InvenTree/index.html:128 templates/InvenTree/search.html:196
+#: templates/InvenTree/search.html:232
+#: templates/InvenTree/settings/tabs.html:28 templates/js/part.js:173
+#: templates/js/part.js:398 templates/js/stock.js:563 templates/navbar.html:26
 msgid "Stock"
 msgstr ""
 
-#: company/templates/company/navbar.html:36
-#: company/templates/company/navbar.html:45
-#: company/templates/company/navbar.html:48
+#: company/templates/company/manufacturer_part_navbar.html:26
+msgid "Manufacturer Part Orders"
+msgstr ""
+
+#: company/templates/company/manufacturer_part_navbar.html:29
+#: company/templates/company/supplier_part_navbar.html:22
+msgid "Orders"
+msgstr ""
+
+#: company/templates/company/manufacturer_part_suppliers.html:22
+#: part/templates/part/supplier.html:22
+msgid "Delete supplier parts"
+msgstr ""
+
+#: company/templates/company/manufacturer_part_suppliers.html:22
+#: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44
+#: part/templates/part/related.html:44 part/templates/part/supplier.html:22
+#: stock/views.py:1002 users/models.py:187
+msgid "Delete"
+msgstr ""
+
+#: company/templates/company/manufacturer_part_suppliers.html:48
+#: part/templates/part/supplier.html:51
+msgid "Create new supplier"
+msgstr ""
+
+#: company/templates/company/navbar.html:20
+#: company/templates/company/navbar.html:23
+msgid "Manufactured Parts"
+msgstr ""
+
+#: company/templates/company/navbar.html:29
+#: company/templates/company/navbar.html:32
+msgid "Supplied Parts"
+msgstr ""
+
+#: company/templates/company/navbar.html:38 part/templates/part/navbar.html:33
+#: stock/templates/stock/location.html:107
+#: stock/templates/stock/location.html:122
+#: stock/templates/stock/location.html:136
+#: stock/templates/stock/location_navbar.html:22
+#: stock/templates/stock/location_navbar.html:29
+#: templates/InvenTree/search.html:198 templates/js/stock.js:968
+#: templates/stats.html:72 templates/stats.html:81 users/models.py:42
+msgid "Stock Items"
+msgstr ""
+
+#: company/templates/company/navbar.html:47
+#: company/templates/company/navbar.html:56
+#: company/templates/company/navbar.html:59
 #: company/templates/company/sales_orders.html:11
 #: order/templates/order/sales_orders.html:8
 #: order/templates/order/sales_orders.html:13
-#: part/templates/part/navbar.html:92 part/templates/part/navbar.html:95
-#: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:227
-#: templates/InvenTree/search.html:330
+#: part/templates/part/navbar.html:98 part/templates/part/navbar.html:101
+#: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228
+#: templates/InvenTree/search.html:345
 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:46
-#: users/models.py:43
+#: users/models.py:45
 msgid "Sales Orders"
 msgstr ""
 
-#: company/templates/company/navbar.html:39
+#: company/templates/company/navbar.html:50
 #: company/templates/company/purchase_orders.html:10
 #: order/templates/order/purchase_orders.html:8
 #: order/templates/order/purchase_orders.html:13
-#: part/templates/part/navbar.html:78 part/templates/part/navbar.html:81
-#: part/templates/part/orders.html:10 templates/InvenTree/index.html:204
-#: templates/InvenTree/search.html:300
+#: part/templates/part/navbar.html:84 part/templates/part/navbar.html:87
+#: part/templates/part/orders.html:10 templates/InvenTree/index.html:205
+#: templates/InvenTree/search.html:325
 #: templates/InvenTree/settings/tabs.html:34 templates/navbar.html:37
-#: users/models.py:42
+#: users/models.py:44
 msgid "Purchase Orders"
 msgstr ""
 
@@ -2086,32 +2298,6 @@ msgstr ""
 msgid "Company Notes"
 msgstr ""
 
-#: company/templates/company/part_navbar.html:11
-#: company/templates/company/supplier_part_stock.html:10
-msgid "Supplier Part Stock"
-msgstr ""
-
-#: company/templates/company/part_navbar.html:18
-#: company/templates/company/supplier_part_orders.html:10
-msgid "Supplier Part Orders"
-msgstr ""
-
-#: company/templates/company/part_navbar.html:21
-msgid "Orders"
-msgstr ""
-
-#: company/templates/company/part_navbar.html:25
-msgid "Supplier Part Pricing"
-msgstr ""
-
-#: company/templates/company/part_navbar.html:28
-msgid "Pricing"
-msgstr ""
-
-#: company/templates/company/partdelete.html:5
-msgid "Are you sure you want to delete the following Supplier Parts?"
-msgstr ""
-
 #: company/templates/company/purchase_orders.html:18
 #: order/templates/order/purchase_orders.html:20
 msgid "Create new purchase order"
@@ -2132,34 +2318,45 @@ msgstr ""
 msgid "New Sales Order"
 msgstr ""
 
-#: company/templates/company/supplier_part_base.html:6
-#: company/templates/company/supplier_part_base.html:19 stock/models.py:380
-#: stock/templates/stock/item_base.html:342 templates/js/company.js:180
+#: company/templates/company/supplier_part_base.html:7
+#: company/templates/company/supplier_part_base.html:20 stock/models.py:382
+#: stock/templates/stock/item_base.html:358 templates/js/company.js:279
 msgid "Supplier Part"
 msgstr ""
 
-#: company/templates/company/supplier_part_base.html:35
-#: company/templates/company/supplier_part_orders.html:17
-#: part/templates/part/orders.html:17 part/templates/part/part_base.html:64
-msgid "Order part"
-msgstr ""
-
-#: company/templates/company/supplier_part_base.html:39
+#: company/templates/company/supplier_part_base.html:40
 msgid "Edit supplier part"
 msgstr ""
 
-#: company/templates/company/supplier_part_base.html:43
+#: company/templates/company/supplier_part_base.html:44
 msgid "Delete supplier part"
 msgstr ""
 
-#: company/templates/company/supplier_part_base.html:55
+#: company/templates/company/supplier_part_base.html:56
 #: company/templates/company/supplier_part_detail.html:10
 msgid "Supplier Part Details"
 msgstr ""
 
-#: company/templates/company/supplier_part_base.html:60
-#: company/templates/company/supplier_part_detail.html:18
-msgid "Internal Part"
+#: company/templates/company/supplier_part_delete.html:5
+msgid "Are you sure you want to delete the following Supplier Parts?"
+msgstr ""
+
+#: company/templates/company/supplier_part_navbar.html:12
+#: company/templates/company/supplier_part_stock.html:10
+msgid "Supplier Part Stock"
+msgstr ""
+
+#: company/templates/company/supplier_part_navbar.html:19
+#: company/templates/company/supplier_part_orders.html:10
+msgid "Supplier Part Orders"
+msgstr ""
+
+#: company/templates/company/supplier_part_navbar.html:26
+msgid "Supplier Part Pricing"
+msgstr ""
+
+#: company/templates/company/supplier_part_navbar.html:29
+msgid "Pricing"
 msgstr ""
 
 #: company/templates/company/supplier_part_orders.html:18
@@ -2171,8 +2368,8 @@ msgstr ""
 msgid "Pricing Information"
 msgstr ""
 
-#: company/templates/company/supplier_part_pricing.html:19 company/views.py:569
-#: part/templates/part/sale_prices.html:17 part/views.py:2618
+#: company/templates/company/supplier_part_pricing.html:19 company/views.py:794
+#: part/templates/part/sale_prices.html:17 part/views.py:2636
 msgid "Add Price Break"
 msgstr ""
 
@@ -2191,99 +2388,106 @@ msgstr ""
 msgid "Delete price break"
 msgstr ""
 
-#: company/views.py:61 part/templates/part/navbar.html:72
-#: part/templates/part/navbar.html:75 templates/InvenTree/search.html:291
-#: templates/navbar.html:35
-msgid "Suppliers"
-msgstr ""
-
-#: company/views.py:68 templates/InvenTree/search.html:308
+#: company/views.py:70 part/templates/part/navbar.html:72
+#: part/templates/part/navbar.html:75 templates/InvenTree/search.html:306
 #: templates/navbar.html:36
 msgid "Manufacturers"
 msgstr ""
 
-#: company/views.py:75 templates/InvenTree/search.html:321
+#: company/views.py:77 templates/InvenTree/search.html:336
 #: templates/navbar.html:45
 msgid "Customers"
 msgstr ""
 
-#: company/views.py:76 order/templates/order/sales_orders.html:185
+#: company/views.py:78 order/templates/order/sales_orders.html:185
 msgid "New Customer"
 msgstr ""
 
-#: company/views.py:84
+#: company/views.py:86
 msgid "Companies"
 msgstr ""
 
-#: company/views.py:85
+#: company/views.py:87
 msgid "New Company"
 msgstr ""
 
-#: company/views.py:167 part/views.py:848
+#: company/views.py:169 part/views.py:848
 msgid "Download Image"
 msgstr ""
 
-#: company/views.py:196 part/views.py:880
+#: company/views.py:198 part/views.py:880
 msgid "Image size exceeds maximum allowable size for download"
 msgstr ""
 
-#: company/views.py:212 part/views.py:896
+#: company/views.py:214 part/views.py:896
 msgid "Supplied URL is not a valid image file"
 msgstr ""
 
-#: company/views.py:241
+#: company/views.py:243
 msgid "Update Company Image"
 msgstr ""
 
-#: company/views.py:247
+#: company/views.py:249
 msgid "Updated company image"
 msgstr ""
 
-#: company/views.py:257
+#: company/views.py:259
 msgid "Edit Company"
 msgstr ""
 
-#: company/views.py:262
+#: company/views.py:264
 msgid "Edited company information"
 msgstr ""
 
-#: company/views.py:285 order/templates/order/sales_orders.html:186
+#: company/views.py:287 order/templates/order/sales_orders.html:186
 msgid "Create new Customer"
 msgstr ""
 
-#: company/views.py:287
+#: company/views.py:289
 msgid "Create new Company"
 msgstr ""
 
-#: company/views.py:314
+#: company/views.py:316
 msgid "Created new company"
 msgstr ""
 
-#: company/views.py:330
+#: company/views.py:332
 msgid "Company was deleted"
 msgstr ""
 
-#: company/views.py:355
+#: company/views.py:357
+msgid "Edit Manufacturer Part"
+msgstr ""
+
+#: company/views.py:366
+msgid "Create New Manufacturer Part"
+msgstr ""
+
+#: company/views.py:440
+msgid "Delete Manufacturer Part"
+msgstr ""
+
+#: company/views.py:528
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: company/views.py:378 templates/js/stock.js:1087
+#: company/views.py:578 templates/js/stock.js:1164
 msgid "Create new Supplier Part"
 msgstr ""
 
-#: company/views.py:497
+#: company/views.py:722
 msgid "Delete Supplier Part"
 msgstr ""
 
-#: company/views.py:574 part/views.py:2622
+#: company/views.py:799 part/views.py:2640
 msgid "Added new price break"
 msgstr ""
 
-#: company/views.py:630 part/views.py:2666
+#: company/views.py:855 part/views.py:2684
 msgid "Edit Price Break"
 msgstr ""
 
-#: company/views.py:645 part/views.py:2680
+#: company/views.py:870 part/views.py:2698
 msgid "Delete Price Break"
 msgstr ""
 
@@ -2331,11 +2535,11 @@ msgstr ""
 msgid "Label height, specified in mm"
 msgstr ""
 
-#: label/models.py:222 label/models.py:273
+#: label/models.py:222 label/models.py:275
 msgid "Query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: label/models.py:223 label/models.py:274 report/models.py:294
+#: label/models.py:223 label/models.py:276 report/models.py:294
 #: report/models.py:415 report/models.py:449
 msgid "Filters"
 msgstr ""
@@ -2373,9 +2577,8 @@ msgstr ""
 msgid "Enter sales order number"
 msgstr ""
 
-#: order/forms.py:145 order/models.py:452
-msgid ""
-"Target date for order completion. Order will be overdue after this date."
+#: order/forms.py:145 order/models.py:462
+msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
 #: order/forms.py:235
@@ -2410,7 +2613,7 @@ msgstr ""
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:182 order/models.py:445
+#: order/models.py:182 order/models.py:455
 msgid "Purchase order status"
 msgstr ""
 
@@ -2444,16 +2647,15 @@ msgid "Target Delivery Date"
 msgstr ""
 
 #: order/models.py:213
-msgid ""
-"Expected date for order delivery. Order will be overdue after this date."
+msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
 #: order/models.py:219
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:243 order/models.py:342 part/views.py:1586
-#: stock/models.py:270 stock/models.py:950
+#: order/models.py:243 part/views.py:1586 stock/models.py:270
+#: stock/models.py:953
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -2461,120 +2663,128 @@ msgstr ""
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:337
+#: order/models.py:344
 msgid "Lines can only be received against an order marked as 'Placed'"
 msgstr ""
 
-#: order/models.py:359
+#: order/models.py:348
+msgid "Quantity must be an integer"
+msgstr ""
+
+#: order/models.py:350
+msgid "Quantity must be a positive number"
+msgstr ""
+
+#: order/models.py:369
 msgid "Received items"
 msgstr ""
 
-#: order/models.py:441
+#: order/models.py:451
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:455 templates/js/order.js:303
+#: order/models.py:465 templates/js/order.js:303
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:462
+#: order/models.py:472
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:506
+#: order/models.py:516
 msgid "SalesOrder cannot be shipped as it is not currently pending"
 msgstr ""
 
-#: order/models.py:593
+#: order/models.py:603
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:595
+#: order/models.py:605
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:597
+#: order/models.py:607
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:623 order/models.py:667
+#: order/models.py:633 order/models.py:677
 #: part/templates/part/allocation.html:17
 #: part/templates/part/allocation.html:45
 msgid "Order"
 msgstr ""
 
-#: order/models.py:624 order/templates/order/order_base.html:9
+#: order/models.py:634 order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:24
 #: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:309 templates/js/order.js:148
+#: stock/templates/stock/item_base.html:313 templates/js/order.js:148
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:638
+#: order/models.py:648
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:641 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:207
+#: order/models.py:651 order/templates/order/order_base.html:131
+#: order/templates/order/purchase_order_detail.html:189
 #: order/templates/order/receive_parts.html:22
 #: order/templates/order/sales_order_base.html:131
 msgid "Received"
 msgstr ""
 
-#: order/models.py:641
+#: order/models.py:651
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:648 stock/models.py:506
-#: stock/templates/stock/item_base.html:316
+#: order/models.py:658 stock/models.py:508
+#: stock/templates/stock/item_base.html:320
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:649
+#: order/models.py:659
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:743 order/models.py:745
+#: order/models.py:753 order/models.py:755
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:749
+#: order/models.py:759
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:751
+#: order/models.py:761
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:754
+#: order/models.py:764
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:764
+#: order/models.py:774
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:769
+#: order/models.py:779
 msgid "Line"
 msgstr ""
 
-#: order/models.py:780
+#: order/models.py:790
 msgid "Item"
 msgstr ""
 
-#: order/models.py:781
+#: order/models.py:791
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:784
+#: order/models.py:794
 msgid "Enter stock allocation quantity"
 msgstr ""
 
@@ -2622,18 +2832,38 @@ msgstr ""
 msgid "Issued"
 msgstr ""
 
-#: order/templates/order/order_cancel.html:7
-#: order/templates/order/sales_order_cancel.html:9
-msgid "Cancelling this order means that the order will no longer be editable."
+#: order/templates/order/order_base.html:180
+#: order/templates/order/purchase_order_detail.html:100
+#: part/templates/part/category.html:185 part/templates/part/category.html:227
+#: stock/templates/stock/location.html:191 templates/js/stock.js:708
+#: templates/js/stock.js:1169
+msgid "New Location"
+msgstr ""
+
+#: order/templates/order/order_base.html:181
+#: order/templates/order/purchase_order_detail.html:101
+#: stock/templates/stock/location.html:42
+msgid "Create new stock location"
+msgstr ""
+
+#: order/templates/order/order_cancel.html:8
+msgid "Cancelling this order means that the order and line items will no longer be editable."
 msgstr ""
 
 #: order/templates/order/order_complete.html:7
 msgid "Mark this order as complete?"
 msgstr ""
 
-#: order/templates/order/order_issue.html:7
-msgid ""
-"After placing this purchase order, line items will no longer be editable."
+#: order/templates/order/order_complete.html:10
+msgid "This order has line items which have not been marked as received."
+msgstr ""
+
+#: order/templates/order/order_complete.html:11
+msgid "Completing this order means that the order and line items will no longer be editable."
+msgstr ""
+
+#: order/templates/order/order_issue.html:8
+msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
 #: order/templates/order/order_notes.html:13
@@ -2657,7 +2887,8 @@ msgid "Select Supplier"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_parts.html:57
-msgid "Select a supplier for"
+#, python-format
+msgid "Select a supplier for <i>%(name)s</i>"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_parts.html:69
@@ -2683,11 +2914,13 @@ msgid "Select Purchase Order"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_pos.html:45
-msgid "Create new purchase order for {{ supplier.name }}"
+#, python-format
+msgid "Create new purchase order for %(name)s"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_pos.html:68
-msgid "Select a purchase order for"
+#, python-format
+msgid "Select a purchase order for %(name)s"
 msgstr ""
 
 #: order/templates/order/po_attachments.html:12
@@ -2709,43 +2942,29 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py:1108
-#: order/views.py:1191
+#: order/templates/order/sales_order_detail.html:22 order/views.py:1120
+#: order/views.py:1203
 msgid "Add Line Item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:45
-#: order/templates/order/purchase_order_detail.html:125
-#: part/templates/part/category.html:197 part/templates/part/category.html:239
-#: stock/templates/stock/location.html:191 templates/js/stock.js:708
-#: templates/js/stock.js:1092
-msgid "New Location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:46
-#: order/templates/order/purchase_order_detail.html:126
-#: stock/templates/stock/location.html:35
-msgid "Create new stock location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:139
+#: order/templates/order/purchase_order_detail.html:114
 msgid "No line items found"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:198
+#: order/templates/order/purchase_order_detail.html:180
 msgid "Unit Price"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:239
+#: order/templates/order/purchase_order_detail.html:221
 #: order/templates/order/sales_order_detail.html:294
 msgid "Edit line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:240
+#: order/templates/order/purchase_order_detail.html:222
 msgid "Delete line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:245
+#: order/templates/order/purchase_order_detail.html:227
 msgid "Receive line item"
 msgstr ""
 
@@ -2755,7 +2974,21 @@ msgid "Print Order Reports"
 msgstr ""
 
 #: order/templates/order/receive_parts.html:8
-msgid "Receive outstanding parts for"
+#, python-format
+msgid "Receive outstanding parts for <b>%(order)s</b> - <i>%(desc)s</i>"
+msgstr ""
+
+#: order/templates/order/receive_parts.html:14 part/api.py:40
+#: part/models.py:322 part/templates/part/cat_link.html:7
+#: part/templates/part/category.html:99
+#: part/templates/part/category_navbar.html:22
+#: part/templates/part/category_navbar.html:29
+#: part/templates/part/category_partlist.html:10
+#: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114
+#: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:577
+#: templates/navbar.html:23 templates/stats.html:59 templates/stats.html:68
+#: users/models.py:40
+msgid "Parts"
 msgstr ""
 
 #: order/templates/order/receive_parts.html:15
@@ -2767,7 +3000,7 @@ msgid "Order Code"
 msgstr ""
 
 #: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:128 templates/js/part.js:413
+#: part/templates/part/part_base.html:129 templates/js/part.js:414
 msgid "On Order"
 msgstr ""
 
@@ -2807,30 +3040,26 @@ msgstr ""
 msgid "Warning"
 msgstr ""
 
+#: order/templates/order/sales_order_cancel.html:9
+msgid "Cancelling this order means that the order will no longer be editable."
+msgstr ""
+
 #: order/templates/order/sales_order_detail.html:13
 msgid "Sales Order Items"
 msgstr ""
 
-#: order/templates/order/sales_order_detail.html:75
-#: order/templates/order/sales_order_detail.html:157
-#: report/templates/report/inventree_test_report_base.html:75
-#: stock/models.py:418 stock/templates/stock/item_base.html:234
-#: templates/js/build.js:418
-msgid "Serial Number"
-msgstr ""
-
-#: order/templates/order/sales_order_detail.html:92 templates/js/bom.js:338
-#: templates/js/build.js:571 templates/js/build.js:984
+#: order/templates/order/sales_order_detail.html:92 templates/js/bom.js:342
+#: templates/js/build.js:627 templates/js/build.js:1044
 msgid "Actions"
 msgstr ""
 
-#: order/templates/order/sales_order_detail.html:99 templates/js/build.js:459
-#: templates/js/build.js:789
+#: order/templates/order/sales_order_detail.html:99 templates/js/build.js:515
+#: templates/js/build.js:849
 msgid "Edit stock allocation"
 msgstr ""
 
-#: order/templates/order/sales_order_detail.html:100 templates/js/build.js:461
-#: templates/js/build.js:790
+#: order/templates/order/sales_order_detail.html:100 templates/js/build.js:517
+#: templates/js/build.js:850
 msgid "Delete stock allocation"
 msgstr ""
 
@@ -2842,8 +3071,8 @@ msgstr ""
 msgid "ID"
 msgstr ""
 
-#: order/templates/order/sales_order_detail.html:229 templates/js/build.js:523
-#: templates/js/build.js:785
+#: order/templates/order/sales_order_detail.html:229 templates/js/build.js:579
+#: templates/js/build.js:845
 msgid "Allocated"
 msgstr ""
 
@@ -2855,7 +3084,7 @@ msgstr ""
 msgid "Allocate serial numbers"
 msgstr ""
 
-#: order/templates/order/sales_order_detail.html:282 templates/js/build.js:585
+#: order/templates/order/sales_order_detail.html:282 templates/js/build.js:641
 msgid "Allocate stock"
 msgstr ""
 
@@ -2863,8 +3092,8 @@ msgstr ""
 msgid "Purchase stock"
 msgstr ""
 
-#: order/templates/order/sales_order_detail.html:289 templates/js/build.js:578
-#: templates/js/build.js:992
+#: order/templates/order/sales_order_detail.html:289 templates/js/build.js:634
+#: templates/js/build.js:1052
 msgid "Build stock"
 msgstr ""
 
@@ -2877,9 +3106,7 @@ msgid "Sales Order Notes"
 msgstr ""
 
 #: order/templates/order/sales_order_ship.html:10
-msgid ""
-"This order has not been fully allocated. If the order is marked as shipped, "
-"it can no longer be adjusted."
+msgid "This order has not been fully allocated. If the order is marked as shipped, it can no longer be adjusted."
 msgstr ""
 
 #: order/templates/order/sales_order_ship.html:12
@@ -3011,87 +3238,87 @@ msgstr ""
 msgid "No lines specified"
 msgstr ""
 
-#: order/views.py:1060
+#: order/views.py:1069
 #, python-brace-format
 msgid "Ordered {n} parts"
 msgstr ""
 
-#: order/views.py:1117
+#: order/views.py:1129
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/views.py:1123
+#: order/views.py:1135
 msgid "Supplier must match for Part and Order"
 msgstr ""
 
-#: order/views.py:1242 order/views.py:1260
+#: order/views.py:1254 order/views.py:1272
 msgid "Edit Line Item"
 msgstr ""
 
-#: order/views.py:1276 order/views.py:1288
+#: order/views.py:1288 order/views.py:1300
 msgid "Delete Line Item"
 msgstr ""
 
-#: order/views.py:1281 order/views.py:1293
+#: order/views.py:1293 order/views.py:1305
 msgid "Deleted line item"
 msgstr ""
 
-#: order/views.py:1306
+#: order/views.py:1318
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: order/views.py:1351
+#: order/views.py:1363
 #, python-brace-format
 msgid "Allocated {n} items"
 msgstr ""
 
-#: order/views.py:1367
+#: order/views.py:1379
 msgid "Select line item"
 msgstr ""
 
-#: order/views.py:1398
+#: order/views.py:1410
 msgid "No matching item for serial"
 msgstr ""
 
-#: order/views.py:1408
+#: order/views.py:1420
 msgid "is not in stock"
 msgstr ""
 
-#: order/views.py:1416
+#: order/views.py:1428
 msgid "already allocated to an order"
 msgstr ""
 
-#: order/views.py:1470
+#: order/views.py:1482
 msgid "Allocate Stock to Order"
 msgstr ""
 
-#: order/views.py:1544
+#: order/views.py:1556
 msgid "Edit Allocation Quantity"
 msgstr ""
 
-#: order/views.py:1559
+#: order/views.py:1571
 msgid "Remove allocation"
 msgstr ""
 
 #: part/bom.py:138 part/models.py:72 part/models.py:762
-#: part/templates/part/category.html:62 part/templates/part/detail.html:90
+#: part/templates/part/category.html:66 part/templates/part/detail.html:90
 msgid "Default Location"
 msgstr ""
 
-#: part/bom.py:139 part/templates/part/part_base.html:116
+#: part/bom.py:139 part/templates/part/part_base.html:117
 msgid "Available Stock"
 msgstr ""
 
-#: part/bom.py:278
+#: part/bom.py:379
 #, python-brace-format
 msgid "Unsupported file format: {f}"
 msgstr ""
 
-#: part/bom.py:283
+#: part/bom.py:384
 msgid "Error reading BOM file (invalid data)"
 msgstr ""
 
-#: part/bom.py:285
+#: part/bom.py:386
 msgid "Error reading BOM file (incorrect row size)"
 msgstr ""
 
@@ -3136,94 +3363,102 @@ msgid "Include part stock data in exported BOM"
 msgstr ""
 
 #: part/forms.py:99
-msgid "Include Supplier Data"
+msgid "Include Manufacturer Data"
 msgstr ""
 
 #: part/forms.py:99
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: part/forms.py:101
+msgid "Include Supplier Data"
+msgstr ""
+
+#: part/forms.py:101
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: part/forms.py:120 part/models.py:2057
+#: part/forms.py:122 part/models.py:2077
 msgid "Parent Part"
 msgstr ""
 
-#: part/forms.py:121 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:123 part/templates/part/bom_duplicate.html:7
 msgid "Select parent part to copy BOM from"
 msgstr ""
 
-#: part/forms.py:127
+#: part/forms.py:129
 msgid "Clear existing BOM items"
 msgstr ""
 
-#: part/forms.py:133
+#: part/forms.py:135
 msgid "Confirm BOM duplication"
 msgstr ""
 
-#: part/forms.py:151
+#: part/forms.py:153
 msgid "validate"
 msgstr ""
 
-#: part/forms.py:151
+#: part/forms.py:153
 msgid "Confirm that the BOM is correct"
 msgstr ""
 
-#: part/forms.py:163
+#: part/forms.py:165
 msgid "BOM file"
 msgstr ""
 
-#: part/forms.py:163
+#: part/forms.py:165
 msgid "Select BOM file to upload"
 msgstr ""
 
-#: part/forms.py:182
+#: part/forms.py:184
 msgid "Related Part"
 msgstr ""
 
-#: part/forms.py:201
+#: part/forms.py:203
 msgid "Select part category"
 msgstr ""
 
-#: part/forms.py:218
+#: part/forms.py:220
 msgid "Duplicate all BOM data for this part"
 msgstr ""
 
-#: part/forms.py:219
+#: part/forms.py:221
 msgid "Copy BOM"
 msgstr ""
 
-#: part/forms.py:224
+#: part/forms.py:226
 msgid "Duplicate all parameter data for this part"
 msgstr ""
 
-#: part/forms.py:225
+#: part/forms.py:227
 msgid "Copy Parameters"
 msgstr ""
 
-#: part/forms.py:230
+#: part/forms.py:232
 msgid "Confirm part creation"
 msgstr ""
 
-#: part/forms.py:235
+#: part/forms.py:237
 msgid "Include category parameter templates"
 msgstr ""
 
-#: part/forms.py:240
+#: part/forms.py:242
 msgid "Include parent categories parameter templates"
 msgstr ""
 
-#: part/forms.py:320
+#: part/forms.py:322
 msgid "Add parameter template to same level categories"
 msgstr ""
 
-#: part/forms.py:324
+#: part/forms.py:326
 msgid "Add parameter template to all categories"
 msgstr ""
 
-#: part/forms.py:342 part/models.py:2151
+#: part/forms.py:344 part/models.py:2171
 msgid "Sub part"
 msgstr ""
 
-#: part/forms.py:370
+#: part/forms.py:372
 msgid "Input quantity for price calculation"
 msgstr ""
 
@@ -3239,15 +3474,15 @@ msgstr ""
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:82 part/models.py:2103
-#: part/templates/part/part_app_base.html:9
+#: part/models.py:82 part/models.py:2123
+#: part/templates/part/part_app_base.html:10
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:83 part/templates/part/category.html:19
-#: part/templates/part/category.html:90 part/templates/part/category.html:141
-#: templates/InvenTree/search.html:126 templates/stats.html:63
-#: users/models.py:37
+#: part/models.py:83 part/templates/part/category.html:23
+#: part/templates/part/category.html:94 part/templates/part/category.html:141
+#: templates/InvenTree/search.html:127 templates/stats.html:63
+#: users/models.py:39
 msgid "Part Categories"
 msgstr ""
 
@@ -3300,7 +3535,7 @@ msgstr ""
 msgid "Part description"
 msgstr ""
 
-#: part/models.py:716 part/templates/part/category.html:69
+#: part/models.py:716 part/templates/part/category.html:73
 #: part/templates/part/detail.html:67
 msgid "Keywords"
 msgstr ""
@@ -3309,8 +3544,8 @@ msgstr ""
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:724 part/models.py:2102 part/templates/part/detail.html:73
-#: part/templates/part/set_category.html:15 templates/js/part.js:384
+#: part/models.py:724 part/models.py:2122 part/templates/part/detail.html:73
+#: part/templates/part/set_category.html:15 templates/js/part.js:385
 msgid "Category"
 msgstr ""
 
@@ -3319,7 +3554,7 @@ msgid "Part category"
 msgstr ""
 
 #: part/models.py:730 part/templates/part/detail.html:28
-#: part/templates/part/part_base.html:93 templates/js/part.js:160
+#: part/templates/part/part_base.html:94 templates/js/part.js:161
 msgid "IPN"
 msgstr ""
 
@@ -3332,7 +3567,7 @@ msgid "Part revision or version number"
 msgstr ""
 
 #: part/models.py:738 part/templates/part/detail.html:35 report/models.py:198
-#: templates/js/part.js:164
+#: templates/js/part.js:165
 msgid "Revision"
 msgstr ""
 
@@ -3364,7 +3599,7 @@ msgstr ""
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:828 part/models.py:2031 part/templates/part/detail.html:106
+#: part/models.py:828 part/models.py:2051 part/templates/part/detail.html:106
 #: part/templates/part/params.html:29
 msgid "Units"
 msgstr ""
@@ -3395,7 +3630,7 @@ msgstr ""
 
 #: part/models.py:861 part/templates/part/detail.html:227
 #: templates/js/table_filters.js:20 templates/js/table_filters.js:60
-#: templates/js/table_filters.js:214 templates/js/table_filters.js:283
+#: templates/js/table_filters.js:236 templates/js/table_filters.js:305
 msgid "Active"
 msgstr ""
 
@@ -3431,170 +3666,168 @@ msgstr ""
 msgid "Creation User"
 msgstr ""
 
-#: part/models.py:1929
+#: part/models.py:1949
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:1946
+#: part/models.py:1966
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:1966 templates/js/part.js:561 templates/js/stock.js:104
+#: part/models.py:1986 templates/js/part.js:638 templates/js/stock.js:104
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:1967
+#: part/models.py:1987
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:1972
+#: part/models.py:1992
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:1973
+#: part/models.py:1993
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:1978 templates/js/part.js:570
-#: templates/js/table_filters.js:200
+#: part/models.py:1998 templates/js/part.js:647
+#: templates/js/table_filters.js:222
 msgid "Required"
 msgstr ""
 
-#: part/models.py:1979
+#: part/models.py:1999
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:1984 templates/js/part.js:578
+#: part/models.py:2004 templates/js/part.js:655
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:1985
+#: part/models.py:2005
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:1990 templates/js/part.js:585
+#: part/models.py:2010 templates/js/part.js:662
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:1991
+#: part/models.py:2011
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:2024
+#: part/models.py:2044
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:2029
+#: part/models.py:2049
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:2031
+#: part/models.py:2051
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:2059 part/models.py:2108 part/models.py:2109
+#: part/models.py:2079 part/models.py:2128 part/models.py:2129
 #: templates/InvenTree/settings/category.html:62
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:2061
+#: part/models.py:2081
 msgid "Data"
 msgstr ""
 
-#: part/models.py:2061
+#: part/models.py:2081
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:2113 templates/InvenTree/settings/category.html:67
+#: part/models.py:2133 templates/InvenTree/settings/category.html:67
 msgid "Default Value"
 msgstr ""
 
-#: part/models.py:2114
+#: part/models.py:2134
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:2143
+#: part/models.py:2163
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:2152
+#: part/models.py:2172
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:2158
+#: part/models.py:2178
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:2160 templates/js/bom.js:216 templates/js/bom.js:269
+#: part/models.py:2180 templates/js/bom.js:216 templates/js/bom.js:269
 msgid "Optional"
 msgstr ""
 
-#: part/models.py:2160
+#: part/models.py:2180
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:2163
+#: part/models.py:2183
 msgid "Overage"
 msgstr ""
 
-#: part/models.py:2164
+#: part/models.py:2184
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:2167
+#: part/models.py:2187
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:2170
+#: part/models.py:2190
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:2172
+#: part/models.py:2192
 msgid "Checksum"
 msgstr ""
 
-#: part/models.py:2172
+#: part/models.py:2192
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:2176 templates/js/bom.js:275 templates/js/bom.js:282
+#: part/models.py:2196 templates/js/bom.js:279 templates/js/bom.js:286
 #: templates/js/table_filters.js:50
 msgid "Inherited"
 msgstr ""
 
-#: part/models.py:2177
+#: part/models.py:2197
 msgid "This BOM item is inherited by BOMs for variant parts"
 msgstr ""
 
-#: part/models.py:2253 part/views.py:1592 part/views.py:1644
+#: part/models.py:2273 part/views.py:1592 part/views.py:1644
 #: stock/models.py:260
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:2262 part/models.py:2264
+#: part/models.py:2282 part/models.py:2284
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:2267
+#: part/models.py:2287
 msgid "BOM Item"
 msgstr ""
 
-#: part/models.py:2384
+#: part/models.py:2404
 msgid "Part 1"
 msgstr ""
 
-#: part/models.py:2388
+#: part/models.py:2408
 msgid "Part 2"
 msgstr ""
 
-#: part/models.py:2388
+#: part/models.py:2408
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:2420
-msgid ""
-"Error creating relationship: check that the part is not related to itself "
-"and that the relationship is unique"
+#: part/models.py:2440
+msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
 #: part/templates/part/allocation.html:11
@@ -3625,8 +3858,7 @@ msgstr ""
 
 #: part/templates/part/bom.html:21
 #, python-format
-msgid ""
-"The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
 msgstr ""
 
 #: part/templates/part/bom.html:25
@@ -3662,7 +3894,7 @@ msgstr ""
 msgid "Validate Bill of Materials"
 msgstr ""
 
-#: part/templates/part/bom.html:61 part/views.py:1883
+#: part/templates/part/bom.html:61 part/views.py:1887
 msgid "Export Bill of Materials"
 msgstr ""
 
@@ -3679,7 +3911,7 @@ msgid "All selected BOM items will be deleted"
 msgstr ""
 
 #: part/templates/part/bom.html:160 part/views.py:584
-#: templates/js/stock.js:1081
+#: templates/js/stock.js:1158
 msgid "Create New Part"
 msgstr ""
 
@@ -3761,8 +3993,7 @@ msgid "Requirements for BOM upload"
 msgstr ""
 
 #: part/templates/part/bom_upload/upload_file.html:21
-msgid ""
-"The BOM file must contain the required named columns as provided in the "
+msgid "The BOM file must contain the required named columns as provided in the "
 msgstr ""
 
 #: part/templates/part/bom_upload/upload_file.html:21
@@ -3779,8 +4010,7 @@ msgstr ""
 
 #: part/templates/part/bom_validate.html:6
 #, python-format
-msgid ""
-"Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
 msgstr ""
 
 #: part/templates/part/bom_validate.html:9
@@ -3795,39 +4025,42 @@ msgstr ""
 msgid "Start New Build"
 msgstr ""
 
-#: part/templates/part/category.html:20
+#: part/templates/part/category.html:24
 msgid "All parts"
 msgstr ""
 
-#: part/templates/part/category.html:25 part/views.py:2264
+#: part/templates/part/category.html:29 part/views.py:2282
 msgid "Create new part category"
 msgstr ""
 
-#: part/templates/part/category.html:31
+#: part/templates/part/category.html:35
 msgid "Edit part category"
 msgstr ""
 
-#: part/templates/part/category.html:36
+#: part/templates/part/category.html:40
 msgid "Delete part category"
 msgstr ""
 
-#: part/templates/part/category.html:46 part/templates/part/category.html:85
+#: part/templates/part/category.html:50 part/templates/part/category.html:89
 msgid "Category Details"
 msgstr ""
 
-#: part/templates/part/category.html:51
+#: part/templates/part/category.html:55
 msgid "Category Path"
 msgstr ""
 
-#: part/templates/part/category.html:56
+#: part/templates/part/category.html:60
 msgid "Category Description"
 msgstr ""
 
-#: part/templates/part/category.html:75
+#: part/templates/part/category.html:79
+#: part/templates/part/category_navbar.html:11
+#: part/templates/part/category_navbar.html:18
+#: part/templates/part/subcategory.html:16
 msgid "Subcategories"
 msgstr ""
 
-#: part/templates/part/category.html:80
+#: part/templates/part/category.html:84
 msgid "Parts (Including subcategories)"
 msgstr ""
 
@@ -3847,24 +4080,24 @@ msgstr ""
 msgid "Export Data"
 msgstr ""
 
-#: part/templates/part/category.html:198
+#: part/templates/part/category.html:186
 #: stock/templates/stock/location.html:192 templates/js/stock.js:709
 msgid "Create new location"
 msgstr ""
 
-#: part/templates/part/category.html:203 part/templates/part/category.html:233
+#: part/templates/part/category.html:191 part/templates/part/category.html:221
 msgid "New Category"
 msgstr ""
 
-#: part/templates/part/category.html:204
+#: part/templates/part/category.html:192
 msgid "Create new category"
 msgstr ""
 
-#: part/templates/part/category.html:234
+#: part/templates/part/category.html:222
 msgid "Create new Part Category"
 msgstr ""
 
-#: part/templates/part/category.html:240 stock/views.py:1359
+#: part/templates/part/category.html:228 stock/views.py:1359
 msgid "Create new Stock Location"
 msgstr ""
 
@@ -3873,17 +4106,12 @@ msgid "Are you sure you want to delete category"
 msgstr ""
 
 #: part/templates/part/category_delete.html:8
-#: part/templates/part/category_delete.html:25
-msgid "This category contains"
-msgstr ""
-
-#: part/templates/part/category_delete.html:8
-msgid "child categories"
+#, python-format
+msgid "This category contains %(count)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"
+msgid "If this category is deleted, these child categories will be moved to the"
 msgstr ""
 
 #: part/templates/part/category_delete.html:11
@@ -3895,22 +4123,21 @@ msgid "top level Parts category"
 msgstr ""
 
 #: part/templates/part/category_delete.html:25
-msgid "parts"
+#, python-format
+msgid "This category contains %(count)s parts"
 msgstr ""
 
 #: part/templates/part/category_delete.html:27
-msgid ""
-"If this category is deleted, these parts will be moved to the parent category"
+#, 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 category Teile"
 msgstr ""
 
-#: part/templates/part/category_navbar.html:18
-#: part/templates/part/category_navbar.html:21
+#: part/templates/part/category_navbar.html:34
+#: part/templates/part/category_navbar.html:37
 #: part/templates/part/navbar.html:22
 msgid "Parameters"
 msgstr ""
@@ -3925,7 +4152,8 @@ msgid "Duplicate Part"
 msgstr ""
 
 #: part/templates/part/copy_part.html:10
-msgid "Make a copy of part"
+#, python-format
+msgid "Make a copy of part '%(full_name)s'."
 msgstr ""
 
 #: part/templates/part/copy_part.html:14
@@ -3938,8 +4166,9 @@ msgstr ""
 msgid "The new part may be a duplicate of these existing parts"
 msgstr ""
 
-#: part/templates/part/create_part.html:16
-msgid "match"
+#: part/templates/part/create_part.html:17
+#, python-format
+msgid "%(full_name)s - <i>%(desc)s</i> (%(match_per)s%% match)"
 msgstr ""
 
 #: part/templates/part/detail.html:11 part/templates/part/navbar.html:11
@@ -4022,6 +4251,19 @@ msgstr ""
 msgid "Part is not active"
 msgstr ""
 
+#: part/templates/part/manufacturer.html:11
+msgid "Part Manufacturers"
+msgstr ""
+
+#: part/templates/part/manufacturer.html:24
+msgid "Delete manufacturer parts"
+msgstr ""
+
+#: part/templates/part/manufacturer.html:53
+#: part/templates/part/supplier.html:57
+msgid "Create new manufacturer"
+msgstr ""
+
 #: part/templates/part/navbar.html:26 part/templates/part/variants.html:11
 msgid "Part Variants"
 msgstr ""
@@ -4042,28 +4284,28 @@ msgstr ""
 msgid "Used In"
 msgstr ""
 
-#: part/templates/part/navbar.html:86
+#: part/templates/part/navbar.html:92
 msgid "Sales Price Information"
 msgstr ""
 
-#: part/templates/part/navbar.html:89
+#: part/templates/part/navbar.html:95
 msgid "Sale Price"
 msgstr ""
 
-#: part/templates/part/navbar.html:100 part/templates/part/part_tests.html:10
+#: part/templates/part/navbar.html:106 part/templates/part/part_tests.html:10
 msgid "Part Test Templates"
 msgstr ""
 
-#: part/templates/part/navbar.html:103 stock/templates/stock/item_base.html:382
+#: part/templates/part/navbar.html:109 stock/templates/stock/item_base.html:398
 msgid "Tests"
 msgstr ""
 
-#: part/templates/part/navbar.html:107 part/templates/part/navbar.html:110
+#: part/templates/part/navbar.html:113 part/templates/part/navbar.html:116
 #: part/templates/part/related.html:10
 msgid "Related Parts"
 msgstr ""
 
-#: part/templates/part/navbar.html:119 part/templates/part/notes.html:12
+#: part/templates/part/navbar.html:125 part/templates/part/notes.html:12
 msgid "Part Notes"
 msgstr ""
 
@@ -4079,7 +4321,7 @@ msgstr ""
 
 #: part/templates/part/params.html:28
 #: report/templates/report/inventree_test_report_base.html:90
-#: stock/models.py:1652 templates/InvenTree/settings/header.html:8
+#: stock/models.py:1655 templates/InvenTree/settings/header.html:8
 #: templates/js/stock.js:124
 msgid "Value"
 msgstr ""
@@ -4088,11 +4330,6 @@ msgstr ""
 msgid "Edit"
 msgstr ""
 
-#: part/templates/part/params.html:44 part/templates/part/related.html:44
-#: part/templates/part/supplier.html:22 stock/views.py:1002 users/models.py:182
-msgid "Delete"
-msgstr ""
-
 #: part/templates/part/params.html:68
 msgid "New Template"
 msgstr ""
@@ -4101,128 +4338,130 @@ msgstr ""
 msgid "Create New Parameter Template"
 msgstr ""
 
-#: part/templates/part/part_app_base.html:11
+#: part/templates/part/part_app_base.html:12
 msgid "Part List"
 msgstr ""
 
-#: part/templates/part/part_base.html:17
-msgid "This part is a variant of"
+#: part/templates/part/part_base.html:18
+#, python-format
+msgid "This part is a variant of %(link)s"
 msgstr ""
 
-#: part/templates/part/part_base.html:32 templates/js/company.js:155
-#: templates/js/part.js:75 templates/js/part.js:152
+#: part/templates/part/part_base.html:33 templates/js/company.js:156
+#: templates/js/company.js:254 templates/js/part.js:76 templates/js/part.js:153
 msgid "Inactive"
 msgstr ""
 
-#: part/templates/part/part_base.html:39
+#: part/templates/part/part_base.html:40
 msgid "Star this part"
 msgstr ""
 
-#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:127
-#: stock/templates/stock/location.html:44
+#: part/templates/part/part_base.html:47
+#: stock/templates/stock/item_base.html:131
+#: stock/templates/stock/location.html:51
 msgid "Barcode actions"
 msgstr ""
 
-#: part/templates/part/part_base.html:48
-#: stock/templates/stock/item_base.html:129
-#: stock/templates/stock/location.html:46 templates/qr_button.html:1
+#: part/templates/part/part_base.html:49
+#: stock/templates/stock/item_base.html:133
+#: stock/templates/stock/location.html:53 templates/qr_button.html:1
 msgid "Show QR Code"
 msgstr ""
 
-#: part/templates/part/part_base.html:49
-#: stock/templates/stock/item_base.html:145
-#: stock/templates/stock/location.html:47
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:149
+#: stock/templates/stock/location.html:54
 msgid "Print Label"
 msgstr ""
 
-#: part/templates/part/part_base.html:54
+#: part/templates/part/part_base.html:55
 msgid "Show pricing information"
 msgstr ""
 
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
 msgid "Count part stock"
 msgstr ""
 
-#: part/templates/part/part_base.html:73
+#: part/templates/part/part_base.html:74
 msgid "Part actions"
 msgstr ""
 
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
 msgid "Duplicate part"
 msgstr ""
 
-#: part/templates/part/part_base.html:79
+#: part/templates/part/part_base.html:80
 msgid "Edit part"
 msgstr ""
 
-#: part/templates/part/part_base.html:82
+#: part/templates/part/part_base.html:83
 msgid "Delete part"
 msgstr ""
 
-#: part/templates/part/part_base.html:122 templates/js/table_filters.js:134
+#: part/templates/part/part_base.html:123 templates/js/table_filters.js:156
 msgid "In Stock"
 msgstr ""
 
-#: part/templates/part/part_base.html:135 templates/InvenTree/index.html:130
+#: part/templates/part/part_base.html:136 templates/InvenTree/index.html:131
 msgid "Required for Build Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:142
+#: part/templates/part/part_base.html:143
 msgid "Required for Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:149
+#: part/templates/part/part_base.html:150
 msgid "Allocated to Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:164 templates/js/bom.js:296
+#: part/templates/part/part_base.html:165 templates/js/bom.js:300
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:170 templates/js/part.js:417
+#: part/templates/part/part_base.html:171 templates/js/part.js:418
 msgid "Building"
 msgstr ""
 
-#: part/templates/part/part_base.html:249
+#: part/templates/part/part_base.html:250
 msgid "Calculate"
 msgstr ""
 
 #: part/templates/part/part_pricing.html:8
-msgid "Pricing information for:"
+#, python-format
+msgid "Pricing information for:<br>%(part)s."
 msgstr ""
 
-#: part/templates/part/part_pricing.html:24
+#: part/templates/part/part_pricing.html:23
 msgid "Supplier Pricing"
 msgstr ""
 
-#: part/templates/part/part_pricing.html:28
-#: part/templates/part/part_pricing.html:54
+#: part/templates/part/part_pricing.html:27
+#: part/templates/part/part_pricing.html:53
 msgid "Unit Cost"
 msgstr ""
 
-#: part/templates/part/part_pricing.html:34
-#: part/templates/part/part_pricing.html:60
+#: part/templates/part/part_pricing.html:33
+#: part/templates/part/part_pricing.html:59
 msgid "Total Cost"
 msgstr ""
 
-#: part/templates/part/part_pricing.html:42
+#: part/templates/part/part_pricing.html:41
 msgid "No supplier pricing available"
 msgstr ""
 
-#: part/templates/part/part_pricing.html:50
+#: part/templates/part/part_pricing.html:49
 msgid "BOM Pricing"
 msgstr ""
 
-#: part/templates/part/part_pricing.html:68
+#: part/templates/part/part_pricing.html:67
 msgid "Note: BOM pricing is incomplete for this part"
 msgstr ""
 
-#: part/templates/part/part_pricing.html:75
+#: part/templates/part/part_pricing.html:74
 msgid "No BOM pricing available"
 msgstr ""
 
-#: part/templates/part/part_pricing.html:85
+#: part/templates/part/part_pricing.html:84
 msgid "No pricing information is available for this part."
 msgstr ""
 
@@ -4234,6 +4473,36 @@ msgstr ""
 msgid "Select from existing images"
 msgstr ""
 
+#: part/templates/part/partial_delete.html:7
+#, python-format
+msgid "Are you sure you want to delete part '<b>%(full_name)s</b>'?"
+msgstr ""
+
+#: part/templates/part/partial_delete.html:12
+#, python-format
+msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
+msgstr ""
+
+#: part/templates/part/partial_delete.html:22
+#, python-format
+msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
+msgstr ""
+
+#: part/templates/part/partial_delete.html:33
+#, python-format
+msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
+msgstr ""
+
+#: part/templates/part/partial_delete.html:44
+#, python-format
+msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
+msgstr ""
+
+#: part/templates/part/partial_delete.html:55
+#, python-format
+msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
+msgstr ""
+
 #: part/templates/part/related.html:18
 msgid "Add Related"
 msgstr ""
@@ -4259,38 +4528,23 @@ msgid "Part Stock"
 msgstr ""
 
 #: part/templates/part/stock.html:16
-msgid "Showing stock for all variants of"
+#, python-format
+msgid "Showing stock for all variants of <i>%(full_name)s</i>"
 msgstr ""
 
 #: part/templates/part/stock_count.html:7 templates/js/bom.js:239
-#: templates/js/part.js:421
+#: templates/js/part.js:422
 msgid "No Stock"
 msgstr ""
 
-#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:129
+#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:130
 msgid "Low Stock"
 msgstr ""
 
-#: part/templates/part/subcategories.html:5
-msgid "Child Categories"
-msgstr ""
-
 #: part/templates/part/supplier.html:10
 msgid "Part Suppliers"
 msgstr ""
 
-#: part/templates/part/supplier.html:22
-msgid "Delete supplier parts"
-msgstr ""
-
-#: part/templates/part/supplier.html:51
-msgid "Create new supplier"
-msgstr ""
-
-#: part/templates/part/supplier.html:57
-msgid "Create new manufacturer"
-msgstr ""
-
 #: part/templates/part/track.html:10
 msgid "Part Tracking"
 msgstr ""
@@ -4304,7 +4558,8 @@ msgid "Create new part variant"
 msgstr ""
 
 #: part/templates/part/variant_part.html:10
-msgid "Create a new variant of template"
+#, python-format
+msgid "Create a new variant of template <i>'%(full_name)s'</i>."
 msgstr ""
 
 #: part/templates/part/variants.html:19
@@ -4452,75 +4707,75 @@ msgstr ""
 msgid "Specify quantity"
 msgstr ""
 
-#: part/views.py:1933
+#: part/views.py:1939
 msgid "Confirm Part Deletion"
 msgstr ""
 
-#: part/views.py:1940
+#: part/views.py:1946
 msgid "Part was deleted"
 msgstr ""
 
-#: part/views.py:1949
+#: part/views.py:1955
 msgid "Part Pricing"
 msgstr ""
 
-#: part/views.py:2063
+#: part/views.py:2081
 msgid "Create Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2073
+#: part/views.py:2091
 msgid "Edit Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2080
+#: part/views.py:2098
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2088
+#: part/views.py:2106
 msgid "Create Part Parameter"
 msgstr ""
 
-#: part/views.py:2138
+#: part/views.py:2156
 msgid "Edit Part Parameter"
 msgstr ""
 
-#: part/views.py:2152
+#: part/views.py:2170
 msgid "Delete Part Parameter"
 msgstr ""
 
-#: part/views.py:2212
+#: part/views.py:2230
 msgid "Edit Part Category"
 msgstr ""
 
-#: part/views.py:2250
+#: part/views.py:2268
 msgid "Delete Part Category"
 msgstr ""
 
-#: part/views.py:2256
+#: part/views.py:2274
 msgid "Part category was deleted"
 msgstr ""
 
-#: part/views.py:2308
+#: part/views.py:2326
 msgid "Create Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2409
+#: part/views.py:2427
 msgid "Edit Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2465
+#: part/views.py:2483
 msgid "Delete Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2484
+#: part/views.py:2502
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/views.py:2554
+#: part/views.py:2572
 msgid "Edit BOM item"
 msgstr ""
 
-#: part/views.py:2610
+#: part/views.py:2628
 msgid "Confim BOM item deletion"
 msgstr ""
 
@@ -4622,17 +4877,17 @@ msgid "Test Results"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:88
-#: stock/models.py:1640
+#: stock/models.py:1643
 msgid "Test"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:89
-#: stock/models.py:1646
+#: stock/models.py:1649
 msgid "Result"
 msgstr ""
 
 #: report/templates/report/inventree_test_report_base.html:92
-#: templates/js/order.js:195 templates/js/stock.js:909
+#: templates/js/order.js:195 templates/js/stock.js:986
 msgid "Date"
 msgstr ""
 
@@ -4654,8 +4909,8 @@ msgstr ""
 msgid "Moved {n} parts to {loc}"
 msgstr ""
 
-#: stock/forms.py:114 stock/forms.py:406 stock/models.py:473
-#: stock/templates/stock/item_base.html:349 templates/js/stock.js:656
+#: stock/forms.py:114 stock/forms.py:406 stock/models.py:475
+#: stock/templates/stock/item_base.html:365 templates/js/stock.js:656
 msgid "Expiry Date"
 msgstr ""
 
@@ -4668,9 +4923,7 @@ msgid "Enter unique serial numbers (or leave blank)"
 msgstr ""
 
 #: stock/forms.py:169
-msgid ""
-"Destination for serialized stock (by default, will remain in current "
-"location)"
+msgid "Destination for serialized stock (by default, will remain in current location)"
 msgstr ""
 
 #: stock/forms.py:171
@@ -4689,7 +4942,8 @@ msgstr ""
 msgid "Select test report template"
 msgstr ""
 
-#: stock/forms.py:267 templates/js/table_filters.js:111
+#: stock/forms.py:267 templates/js/table_filters.js:70
+#: templates/js/table_filters.js:133
 msgid "Include sublocations"
 msgstr ""
 
@@ -4745,11 +4999,11 @@ msgstr ""
 msgid "Set the destination as the default location for selected parts"
 msgstr ""
 
-#: stock/models.py:54 stock/models.py:511
+#: stock/models.py:54 stock/models.py:513
 msgid "Owner"
 msgstr ""
 
-#: stock/models.py:55 stock/models.py:512
+#: stock/models.py:55 stock/models.py:514
 msgid "Select Owner"
 msgstr ""
 
@@ -4786,203 +5040,202 @@ msgstr ""
 msgid "Build reference does not point to the same part object"
 msgstr ""
 
-#: stock/models.py:363
+#: stock/models.py:365
 msgid "Parent Stock Item"
 msgstr ""
 
-#: stock/models.py:372
+#: stock/models.py:374
 msgid "Base part"
 msgstr ""
 
-#: stock/models.py:381
+#: stock/models.py:383
 msgid "Select a matching supplier part for this stock item"
 msgstr ""
 
-#: stock/models.py:386 stock/templates/stock/stock_app_base.html:7
+#: stock/models.py:388 stock/templates/stock/stock_app_base.html:8
 msgid "Stock Location"
 msgstr ""
 
-#: stock/models.py:389
+#: stock/models.py:391
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:396
+#: stock/models.py:398
 msgid "Packaging this stock item is stored in"
 msgstr ""
 
-#: stock/models.py:401 stock/templates/stock/item_base.html:255
+#: stock/models.py:403 stock/templates/stock/item_base.html:259
 msgid "Installed In"
 msgstr ""
 
-#: stock/models.py:404
+#: stock/models.py:406
 msgid "Is this item installed in another item?"
 msgstr ""
 
-#: stock/models.py:420
+#: stock/models.py:422
 msgid "Serial number for this item"
 msgstr ""
 
-#: stock/models.py:432
+#: stock/models.py:434
 msgid "Batch code for this stock item"
 msgstr ""
 
-#: stock/models.py:436
+#: stock/models.py:438
 msgid "Stock Quantity"
 msgstr ""
 
-#: stock/models.py:445
+#: stock/models.py:447
 msgid "Source Build"
 msgstr ""
 
-#: stock/models.py:447
+#: stock/models.py:449
 msgid "Build for this stock item"
 msgstr ""
 
-#: stock/models.py:458
+#: stock/models.py:460
 msgid "Source Purchase Order"
 msgstr ""
 
-#: stock/models.py:461
+#: stock/models.py:463
 msgid "Purchase order for this stock item"
 msgstr ""
 
-#: stock/models.py:467
+#: stock/models.py:469
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:474
-msgid ""
-"Expiry date for stock item. Stock will be considered expired after this date"
+#: stock/models.py:476
+msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
-#: stock/models.py:487
+#: stock/models.py:489
 msgid "Delete on deplete"
 msgstr ""
 
-#: stock/models.py:487
+#: stock/models.py:489
 msgid "Delete this Stock Item when stock is depleted"
 msgstr ""
 
-#: stock/models.py:497 stock/templates/stock/item_notes.html:13
+#: stock/models.py:499 stock/templates/stock/item_notes.html:13
 #: stock/templates/stock/navbar.html:54
 msgid "Stock Item Notes"
 msgstr ""
 
-#: stock/models.py:507
+#: stock/models.py:509
 msgid "Single unit purchase price at time of purchase"
 msgstr ""
 
-#: stock/models.py:612
+#: stock/models.py:614
 msgid "Assigned to Customer"
 msgstr ""
 
-#: stock/models.py:614
+#: stock/models.py:616
 msgid "Manually assigned to customer"
 msgstr ""
 
-#: stock/models.py:627
+#: stock/models.py:629
 msgid "Returned from customer"
 msgstr ""
 
-#: stock/models.py:629
+#: stock/models.py:631
 msgid "Returned to location"
 msgstr ""
 
-#: stock/models.py:789
+#: stock/models.py:792
 msgid "Installed into stock item"
 msgstr ""
 
-#: stock/models.py:797
+#: stock/models.py:800
 msgid "Installed stock item"
 msgstr ""
 
-#: stock/models.py:821
+#: stock/models.py:824
 msgid "Uninstalled stock item"
 msgstr ""
 
-#: stock/models.py:840
+#: stock/models.py:843
 msgid "Uninstalled into location"
 msgstr ""
 
-#: stock/models.py:941
+#: stock/models.py:944
 msgid "Part is not set as trackable"
 msgstr ""
 
-#: stock/models.py:947
+#: stock/models.py:950
 msgid "Quantity must be integer"
 msgstr ""
 
-#: stock/models.py:953
+#: stock/models.py:956
 #, python-brace-format
 msgid "Quantity must not exceed available stock quantity ({n})"
 msgstr ""
 
-#: stock/models.py:956
+#: stock/models.py:959
 msgid "Serial numbers must be a list of integers"
 msgstr ""
 
-#: stock/models.py:959
+#: stock/models.py:962
 msgid "Quantity does not match serial numbers"
 msgstr ""
 
-#: stock/models.py:991
+#: stock/models.py:994
 msgid "Add serial number"
 msgstr ""
 
-#: stock/models.py:994
+#: stock/models.py:997
 #, python-brace-format
 msgid "Serialized {n} items"
 msgstr ""
 
-#: stock/models.py:1072
+#: stock/models.py:1075
 msgid "Split from existing stock"
 msgstr ""
 
-#: stock/models.py:1110
+#: stock/models.py:1113
 msgid "StockItem cannot be moved as it is not in stock"
 msgstr ""
 
-#: stock/models.py:1553
+#: stock/models.py:1556
 msgid "Title"
 msgstr ""
 
-#: stock/models.py:1553
+#: stock/models.py:1556
 msgid "Tracking entry title"
 msgstr ""
 
-#: stock/models.py:1555
+#: stock/models.py:1558
 msgid "Entry notes"
 msgstr ""
 
-#: stock/models.py:1557
+#: stock/models.py:1560
 msgid "Link to external page for further information"
 msgstr ""
 
-#: stock/models.py:1617
+#: stock/models.py:1620
 msgid "Value must be provided for this test"
 msgstr ""
 
-#: stock/models.py:1623
+#: stock/models.py:1626
 msgid "Attachment must be uploaded for this test"
 msgstr ""
 
-#: stock/models.py:1641
+#: stock/models.py:1644
 msgid "Test name"
 msgstr ""
 
-#: stock/models.py:1647 templates/js/table_filters.js:190
+#: stock/models.py:1650 templates/js/table_filters.js:212
 msgid "Test result"
 msgstr ""
 
-#: stock/models.py:1653
+#: stock/models.py:1656
 msgid "Test output value"
 msgstr ""
 
-#: stock/models.py:1660
+#: stock/models.py:1663
 msgid "Test result attachment"
 msgstr ""
 
-#: stock/models.py:1666
+#: stock/models.py:1669
 msgid "Test notes"
 msgstr ""
 
@@ -4999,9 +5252,7 @@ msgid "Stock Item Attachments"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:24
-msgid ""
-"You are not in the list of owners of this item. This stock item cannot be "
-"edited."
+msgid "You are not in the list of owners of this item. This stock item cannot be edited."
 msgstr ""
 
 #: stock/templates/stock/item_base.html:31
@@ -5016,156 +5267,157 @@ msgstr ""
 msgid "This stock item has not passed all required tests"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:51
-msgid "This stock item is allocated to Sales Order"
+#: stock/templates/stock/item_base.html:53
+#, python-format
+msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:57
-msgid "This stock item is allocated to Build"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:63
-msgid ""
-"This stock item is serialized - it has a unique serial number and the "
-"quantity cannot be adjusted."
+#: stock/templates/stock/item_base.html:61
+#, python-format
+msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:67
-msgid "This stock item cannot be deleted as it has child items"
+msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
 msgstr ""
 
 #: stock/templates/stock/item_base.html:71
-msgid ""
-"This stock item will be automatically deleted when all stock is depleted."
+msgid "This stock item cannot be deleted as it has child items"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:91
-#: stock/templates/stock/item_base.html:353 templates/js/table_filters.js:123
-msgid "Expired"
+#: stock/templates/stock/item_base.html:75
+msgid "This stock item will be automatically deleted when all stock is depleted."
 msgstr ""
 
 #: stock/templates/stock/item_base.html:95
-#: stock/templates/stock/item_base.html:355 templates/js/table_filters.js:128
+#: stock/templates/stock/item_base.html:369 templates/js/table_filters.js:145
+msgid "Expired"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:99
+#: stock/templates/stock/item_base.html:371 templates/js/table_filters.js:150
 msgid "Stale"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:132 templates/js/barcode.js:309
+#: stock/templates/stock/item_base.html:136 templates/js/barcode.js:309
 #: templates/js/barcode.js:314
 msgid "Unlink Barcode"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:134
+#: stock/templates/stock/item_base.html:138
 msgid "Link Barcode"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:136 templates/stock_table.html:31
+#: stock/templates/stock/item_base.html:140 templates/stock_table.html:31
 msgid "Scan to Location"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:143
+#: stock/templates/stock/item_base.html:147
 msgid "Printing actions"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:147
+#: stock/templates/stock/item_base.html:151
 #: stock/templates/stock/item_tests.html:27
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:156
+#: stock/templates/stock/item_base.html:160
 msgid "Stock adjustment actions"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:160
-#: stock/templates/stock/location.html:58 templates/stock_table.html:55
+#: stock/templates/stock/item_base.html:164
+#: stock/templates/stock/location.html:65 templates/stock_table.html:57
 msgid "Count stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:163 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:167 templates/stock_table.html:55
 msgid "Add stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:166 templates/stock_table.html:54
+#: stock/templates/stock/item_base.html:170 templates/stock_table.html:56
 msgid "Remove stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:169
+#: stock/templates/stock/item_base.html:173
 msgid "Serialize stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:173
+#: stock/templates/stock/item_base.html:177
 msgid "Transfer stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:176
+#: stock/templates/stock/item_base.html:180
 msgid "Assign to customer"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:179
+#: stock/templates/stock/item_base.html:183
 msgid "Return to stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:183 templates/js/stock.js:1222
+#: stock/templates/stock/item_base.html:187 templates/js/stock.js:1299
 msgid "Uninstall stock item"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:183
+#: stock/templates/stock/item_base.html:187
 msgid "Uninstall"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:192
-#: stock/templates/stock/location.html:55
+#: stock/templates/stock/item_base.html:196
+#: stock/templates/stock/location.html:62
 msgid "Stock actions"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:195
+#: stock/templates/stock/item_base.html:199
 msgid "Convert to variant"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:198
+#: stock/templates/stock/item_base.html:202
 msgid "Duplicate stock item"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:200
+#: stock/templates/stock/item_base.html:204
 msgid "Edit stock item"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:203
+#: stock/templates/stock/item_base.html:207
 msgid "Delete stock item"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:215
+#: stock/templates/stock/item_base.html:219
 msgid "Stock Item Details"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:274 templates/js/build.js:442
+#: stock/templates/stock/item_base.html:278 templates/js/build.js:498
 msgid "No location set"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:281
+#: stock/templates/stock/item_base.html:285
 msgid "Barcode Identifier"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:323
+#: stock/templates/stock/item_base.html:327
 msgid "Parent Item"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:353
-msgid "This StockItem expired on"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:355
-msgid "This StockItem expires on"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:362 templates/js/stock.js:662
-msgid "Last Updated"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:367
-msgid "Last Stocktake"
+#: stock/templates/stock/item_base.html:369
+#, python-format
+msgid "This StockItem expired on %(item.expiry_date)s"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:371
+#, python-format
+msgid "This StockItem expires on %(item.expiry_date)s"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:378 templates/js/stock.js:662
+msgid "Last Updated"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:383
+msgid "Last Stocktake"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:387
 msgid "No stocktake performed"
 msgstr ""
 
@@ -5181,6 +5433,11 @@ msgstr ""
 msgid "Are you sure you want to delete this stock item?"
 msgstr ""
 
+#: stock/templates/stock/item_delete.html:12
+#, python-format
+msgid "This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
+msgstr ""
+
 #: stock/templates/stock/item_install.html:7
 msgid "Install another StockItem into this item."
 msgstr ""
@@ -5223,54 +5480,55 @@ msgstr ""
 msgid "Add Test Data"
 msgstr ""
 
-#: stock/templates/stock/location.html:13
-msgid ""
-"You are not in the list of owners of this location. This stock location "
-"cannot be edited."
+#: stock/templates/stock/location.html:20
+msgid "You are not in the list of owners of this location. This stock location cannot be edited."
 msgstr ""
 
-#: stock/templates/stock/location.html:30
+#: stock/templates/stock/location.html:37
 msgid "All stock items"
 msgstr ""
 
-#: stock/templates/stock/location.html:48
+#: stock/templates/stock/location.html:55
 msgid "Check-in Items"
 msgstr ""
 
-#: stock/templates/stock/location.html:64
+#: stock/templates/stock/location.html:71
 msgid "Location actions"
 msgstr ""
 
-#: stock/templates/stock/location.html:66
+#: stock/templates/stock/location.html:73
 msgid "Edit location"
 msgstr ""
 
-#: stock/templates/stock/location.html:68
+#: stock/templates/stock/location.html:75
 msgid "Delete location"
 msgstr ""
 
-#: stock/templates/stock/location.html:80
+#: stock/templates/stock/location.html:87
 msgid "Location Details"
 msgstr ""
 
-#: stock/templates/stock/location.html:85
+#: stock/templates/stock/location.html:92
 msgid "Location Path"
 msgstr ""
 
-#: stock/templates/stock/location.html:90
+#: stock/templates/stock/location.html:97
 msgid "Location Description"
 msgstr ""
 
-#: stock/templates/stock/location.html:95
+#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location_navbar.html:11
+#: stock/templates/stock/location_navbar.html:18
+#: stock/templates/stock/sublocation.html:16
 msgid "Sublocations"
 msgstr ""
 
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:112
 msgid "Stock Details"
 msgstr ""
 
-#: stock/templates/stock/location.html:110 templates/InvenTree/search.html:263
-#: templates/stats.html:76 users/models.py:39
+#: stock/templates/stock/location.html:117 templates/InvenTree/search.html:279
+#: templates/stats.html:76 users/models.py:41
 msgid "Stock Locations"
 msgstr ""
 
@@ -5278,18 +5536,6 @@ msgstr ""
 msgid "Are you sure you want to delete this stock location?"
 msgstr ""
 
-#: stock/templates/stock/location_list.html:6
-msgid "Sub-Locations"
-msgstr ""
-
-#. Translators: pluralize with counter
-#: stock/templates/stock/location_list.html:17
-#, python-format
-msgid "%(counter)s Item"
-msgid_plural "%(counter)s Items"
-msgstr[0] ""
-msgstr[1] ""
-
 #: stock/templates/stock/navbar.html:11
 msgid "Stock Item Tracking"
 msgstr ""
@@ -5314,7 +5560,7 @@ msgstr ""
 msgid "Remove item"
 msgstr ""
 
-#: stock/templates/stock/stock_app_base.html:15
+#: stock/templates/stock/stock_app_base.html:16
 msgid "Loading..."
 msgstr ""
 
@@ -5327,7 +5573,8 @@ msgid "Convert Stock Item"
 msgstr ""
 
 #: stock/templates/stock/stockitem_convert.html:8
-msgid "This stock item is current an instance of "
+#, python-format
+msgid "This stock item is current an instance of <i>%(part)s</i>"
 msgstr ""
 
 #: stock/templates/stock/stockitem_convert.html:9
@@ -5338,6 +5585,18 @@ msgstr ""
 msgid "This action cannot be easily undone"
 msgstr ""
 
+#: stock/templates/stock/sublocation.html:23 templates/stock_table.html:37
+msgid "Printing Actions"
+msgstr ""
+
+#: stock/templates/stock/sublocation.html:27 templates/stock_table.html:41
+msgid "Print labels"
+msgstr ""
+
+#: stock/templates/stock/tracking_delete.html:6
+msgid "Are you sure you want to delete this stock tracking entry?"
+msgstr ""
+
 #: stock/views.py:123
 msgid "Edit Stock Location"
 msgstr ""
@@ -5455,7 +5714,7 @@ msgstr ""
 msgid "Add Stock Items"
 msgstr ""
 
-#: stock/views.py:1001 users/models.py:178
+#: stock/views.py:1001 users/models.py:183
 msgid "Add"
 msgstr ""
 
@@ -5517,7 +5776,7 @@ msgstr ""
 msgid "Serialize Stock"
 msgstr ""
 
-#: stock/views.py:1543 templates/js/build.js:210
+#: stock/views.py:1543 templates/js/build.js:244
 msgid "Create new Stock Item"
 msgstr ""
 
@@ -5565,74 +5824,99 @@ msgstr ""
 msgid "The requested page does not exist"
 msgstr ""
 
-#: templates/InvenTree/index.html:6
+#: templates/InvenTree/index.html:7
 msgid "Index"
 msgstr ""
 
-#: templates/InvenTree/index.html:97
+#: templates/InvenTree/index.html:98
 msgid "Starred Parts"
 msgstr ""
 
-#: templates/InvenTree/index.html:98
+#: templates/InvenTree/index.html:99
 msgid "Latest Parts"
 msgstr ""
 
-#: templates/InvenTree/index.html:99
+#: templates/InvenTree/index.html:100
 msgid "BOM Waiting Validation"
 msgstr ""
 
-#: templates/InvenTree/index.html:128
+#: templates/InvenTree/index.html:129
 msgid "Recently Updated"
 msgstr ""
 
-#: templates/InvenTree/index.html:144
+#: templates/InvenTree/index.html:145
 msgid "Expired Stock"
 msgstr ""
 
-#: templates/InvenTree/index.html:145
+#: templates/InvenTree/index.html:146
 msgid "Stale Stock"
 msgstr ""
 
-#: templates/InvenTree/index.html:183
+#: templates/InvenTree/index.html:184
 msgid "Build Orders In Progress"
 msgstr ""
 
-#: templates/InvenTree/index.html:184
+#: templates/InvenTree/index.html:185
 msgid "Overdue Build Orders"
 msgstr ""
 
-#: templates/InvenTree/index.html:205
+#: templates/InvenTree/index.html:206
 msgid "Outstanding Purchase Orders"
 msgstr ""
 
-#: templates/InvenTree/index.html:206
+#: templates/InvenTree/index.html:207
 msgid "Overdue Purchase Orders"
 msgstr ""
 
-#: templates/InvenTree/index.html:228
+#: templates/InvenTree/index.html:229
 msgid "Outstanding Sales Orders"
 msgstr ""
 
-#: templates/InvenTree/index.html:229
+#: templates/InvenTree/index.html:230
 msgid "Overdue Sales Orders"
 msgstr ""
 
-#: templates/InvenTree/search.html:7 templates/InvenTree/search.html:13
+#: templates/InvenTree/search.html:8 templates/InvenTree/search.html:14
 msgid "Search Results"
 msgstr ""
 
-#: templates/InvenTree/search.html:23
+#: templates/InvenTree/search.html:24
 msgid "Enter a search query"
 msgstr ""
 
-#: templates/InvenTree/search.html:252 templates/js/stock.js:300
+#: templates/InvenTree/search.html:268 templates/js/stock.js:300
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/InvenTree/search.html:255 templates/js/stock.js:310
+#: templates/InvenTree/search.html:271 templates/js/stock.js:310
 msgid "No stock location set"
 msgstr ""
 
+#: templates/InvenTree/settings/appearance.html:10
+msgid "Theme Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:17
+msgid "Color Themes"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:29
+#, python-format
+msgid ""
+"\n"
+"        The CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
+"        Please select another color theme :)\n"
+"    "
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:39
+msgid "Language"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:61
+msgid "Set Language"
+msgstr ""
+
 #: templates/InvenTree/settings/build.html:10
 msgid "Build Order Settings"
 msgstr ""
@@ -5663,7 +5947,7 @@ msgstr ""
 msgid "Global InvenTree Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/global.html:26
+#: templates/InvenTree/settings/global.html:27
 msgid "Barcode Settings"
 msgstr ""
 
@@ -5703,8 +5987,8 @@ msgstr ""
 msgid "Edit setting"
 msgstr ""
 
-#: templates/InvenTree/settings/settings.html:7
-#: templates/InvenTree/settings/settings.html:13 templates/navbar.html:78
+#: templates/InvenTree/settings/settings.html:8
+#: templates/InvenTree/settings/settings.html:14 templates/navbar.html:84
 msgid "Settings"
 msgstr ""
 
@@ -5716,7 +6000,7 @@ msgstr ""
 msgid "Stock Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:48
+#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:50
 msgid "Stock Options"
 msgstr ""
 
@@ -5730,7 +6014,7 @@ msgid "Account"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:9
-msgid "Theme"
+msgid "Appearance"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:13
@@ -5749,24 +6033,6 @@ msgstr ""
 msgid "Categories"
 msgstr ""
 
-#: templates/InvenTree/settings/theme.html:10
-msgid "Theme Settings"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:17
-msgid "Color Themes"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:29
-#, python-format
-msgid ""
-"\n"
-"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected "
-"color theme was not found.<br>\n"
-"\t\tPlease select another color theme :)\n"
-"\t"
-msgstr ""
-
 #: templates/InvenTree/settings/user.html:16
 msgid "User Information"
 msgstr ""
@@ -5776,7 +6042,7 @@ msgid "Change Password"
 msgstr ""
 
 #: templates/InvenTree/settings/user.html:28
-#: templates/registration/login.html:58
+#: templates/registration/login.html:59
 msgid "Username"
 msgstr ""
 
@@ -5829,13 +6095,23 @@ msgid "View Code on GitHub"
 msgstr ""
 
 #: templates/about.html:63
-msgid "Get the App"
+msgid "Credits"
 msgstr ""
 
 #: templates/about.html:68
+msgid "Mobile App"
+msgstr ""
+
+#: templates/about.html:73
 msgid "Submit Bug Report"
 msgstr ""
 
+#: templates/about.html:82 templates/js/modals.js:550
+#: templates/js/modals.js:809 templates/modals.html:28 templates/modals.html:52
+#: templates/modals.html:93
+msgid "Close"
+msgstr ""
+
 #: templates/attachment_table.html:6
 msgid "Add Attachment"
 msgstr ""
@@ -5913,8 +6189,7 @@ msgid "Link Barcode to Stock Item"
 msgstr ""
 
 #: templates/js/barcode.js:311
-msgid ""
-"This will remove the association between this stock item and the barcode"
+msgid "This will remove the association between this stock item and the barcode"
 msgstr ""
 
 #: templates/js/barcode.js:317
@@ -5961,7 +6236,7 @@ msgstr ""
 msgid "Barcode does not match a valid location"
 msgstr ""
 
-#: templates/js/bom.js:175 templates/js/build.js:934
+#: templates/js/bom.js:175 templates/js/build.js:994
 msgid "Open subassembly"
 msgstr ""
 
@@ -5969,77 +6244,88 @@ msgstr ""
 msgid "No pricing available"
 msgstr ""
 
-#: templates/js/bom.js:286 templates/js/bom.js:372
+#: templates/js/bom.js:272 templates/js/filters.js:167
+#: templates/js/filters.js:397
+msgid "true"
+msgstr ""
+
+#: templates/js/bom.js:273 templates/js/filters.js:171
+#: templates/js/filters.js:398
+msgid "false"
+msgstr ""
+
+#: templates/js/bom.js:290 templates/js/bom.js:376
 msgid "View BOM"
 msgstr ""
 
-#: templates/js/bom.js:346
+#: templates/js/bom.js:350
 msgid "Validate BOM Item"
 msgstr ""
 
-#: templates/js/bom.js:348
+#: templates/js/bom.js:352
 msgid "This line has been validated"
 msgstr ""
 
-#: templates/js/bom.js:350
+#: templates/js/bom.js:354
 msgid "Edit BOM Item"
 msgstr ""
 
-#: templates/js/bom.js:352
+#: templates/js/bom.js:356
 msgid "Delete BOM Item"
 msgstr ""
 
-#: templates/js/bom.js:443 templates/js/build.js:305 templates/js/build.js:1032
+#: templates/js/bom.js:447 templates/js/build.js:340 templates/js/build.js:1092
 msgid "No BOM items found"
 msgstr ""
 
-#: templates/js/build.js:56
+#: templates/js/build.js:62
 msgid "Auto-allocate stock items to this output"
 msgstr ""
 
-#: templates/js/build.js:62
-msgid "Complete build output"
-msgstr ""
-
-#: templates/js/build.js:71
+#: templates/js/build.js:70
 msgid "Unallocate stock from build output"
 msgstr ""
 
-#: templates/js/build.js:77
+#: templates/js/build.js:80
+msgid "Complete build output"
+msgstr ""
+
+#: templates/js/build.js:89
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/build.js:209 templates/stock_table.html:20
+#: templates/js/build.js:243 templates/stock_table.html:20
 msgid "New Stock Item"
 msgstr ""
 
-#: templates/js/build.js:493
+#: templates/js/build.js:549
 msgid "Required Part"
 msgstr ""
 
-#: templates/js/build.js:514
+#: templates/js/build.js:570
 msgid "Quantity Per"
 msgstr ""
 
-#: templates/js/build.js:582 templates/js/build.js:996
-#: templates/stock_table.html:57
+#: templates/js/build.js:638 templates/js/build.js:1056
+#: templates/stock_table.html:59
 msgid "Order stock"
 msgstr ""
 
-#: templates/js/build.js:632
+#: templates/js/build.js:691
 msgid "No builds matching query"
 msgstr ""
 
-#: templates/js/build.js:649 templates/js/part.js:323 templates/js/stock.js:511
-#: templates/js/stock.js:1254
+#: templates/js/build.js:708 templates/js/part.js:324 templates/js/part.js:546
+#: templates/js/stock.js:511 templates/js/stock.js:938
+#: templates/js/stock.js:1331
 msgid "Select"
 msgstr ""
 
-#: templates/js/build.js:669
+#: templates/js/build.js:728
 msgid "Build order is overdue"
 msgstr ""
 
-#: templates/js/build.js:767
+#: templates/js/build.js:827
 msgid "No parts allocated for"
 msgstr ""
 
@@ -6056,17 +6342,23 @@ msgid "No company information found"
 msgstr ""
 
 #: templates/js/company.js:129
-msgid "No supplier parts found"
+msgid "No manufacturer parts found"
 msgstr ""
 
-#: templates/js/company.js:147 templates/js/part.js:59 templates/js/part.js:144
+#: templates/js/company.js:148 templates/js/company.js:246
+#: templates/js/part.js:60 templates/js/part.js:145
 msgid "Template part"
 msgstr ""
 
-#: templates/js/company.js:151 templates/js/part.js:63 templates/js/part.js:148
+#: templates/js/company.js:152 templates/js/company.js:250
+#: templates/js/part.js:64 templates/js/part.js:149
 msgid "Assembled part"
 msgstr ""
 
+#: templates/js/company.js:227
+msgid "No supplier parts found"
+msgstr ""
+
 #: templates/js/filters.js:193
 msgid "Select filter"
 msgstr ""
@@ -6148,11 +6440,6 @@ msgstr ""
 msgid "Submit"
 msgstr ""
 
-#: templates/js/modals.js:550 templates/js/modals.js:809
-#: templates/modals.html:28 templates/modals.html:52 templates/modals.html:93
-msgid "Close"
-msgstr ""
-
 #: templates/js/modals.js:760
 msgid "Invalid response from server"
 msgstr ""
@@ -6233,59 +6520,63 @@ msgstr ""
 msgid "No sales orders found"
 msgstr ""
 
-#: templates/js/part.js:51 templates/js/part.js:136
+#: templates/js/part.js:52 templates/js/part.js:137
 msgid "Trackable part"
 msgstr ""
 
-#: templates/js/part.js:55 templates/js/part.js:140
+#: templates/js/part.js:56 templates/js/part.js:141
 msgid "Virtual part"
 msgstr ""
 
-#: templates/js/part.js:67
+#: templates/js/part.js:68
 msgid "Starred part"
 msgstr ""
 
-#: templates/js/part.js:71
+#: templates/js/part.js:72
 msgid "Salable part"
 msgstr ""
 
-#: templates/js/part.js:185
+#: templates/js/part.js:186
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/part.js:271 templates/js/part.js:451
+#: templates/js/part.js:272 templates/js/part.js:452
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/part.js:390
+#: templates/js/part.js:391
 msgid "No category"
 msgstr ""
 
-#: templates/js/part.js:408 templates/js/table_filters.js:296
+#: templates/js/part.js:409 templates/js/table_filters.js:318
 msgid "Low stock"
 msgstr ""
 
-#: templates/js/part.js:511
+#: templates/js/part.js:571 templates/js/stock.js:962
+msgid "Path"
+msgstr ""
+
+#: templates/js/part.js:588
 msgid "YES"
 msgstr ""
 
-#: templates/js/part.js:513
+#: templates/js/part.js:590
 msgid "NO"
 msgstr ""
 
-#: templates/js/part.js:547
+#: templates/js/part.js:624
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/part.js:598 templates/js/stock.js:75
+#: templates/js/part.js:675 templates/js/stock.js:75
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/part.js:599 templates/js/stock.js:76
+#: templates/js/part.js:676 templates/js/stock.js:76
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/part.js:605
+#: templates/js/part.js:682
 msgid "This test is defined for a parent part"
 msgstr ""
 
@@ -6399,6 +6690,18 @@ msgstr ""
 msgid "No stock items matching query"
 msgstr ""
 
+#: templates/js/stock.js:357
+msgid "items"
+msgstr ""
+
+#: templates/js/stock.js:449
+msgid "batches"
+msgstr ""
+
+#: templates/js/stock.js:476
+msgid "locations"
+msgstr ""
+
 #: templates/js/stock.js:478
 msgid "Undefined location"
 msgstr ""
@@ -6443,7 +6746,7 @@ msgstr ""
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/stock.js:620 templates/js/table_filters.js:116
+#: templates/js/stock.js:620 templates/js/table_filters.js:138
 msgid "Depleted"
 msgstr ""
 
@@ -6467,31 +6770,31 @@ msgstr ""
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/stock.js:973
+#: templates/js/stock.js:1050
 msgid "No user information"
 msgstr ""
 
-#: templates/js/stock.js:983
+#: templates/js/stock.js:1060
 msgid "Edit tracking entry"
 msgstr ""
 
-#: templates/js/stock.js:984
+#: templates/js/stock.js:1061
 msgid "Delete tracking entry"
 msgstr ""
 
-#: templates/js/stock.js:1093
+#: templates/js/stock.js:1170
 msgid "Create New Location"
 msgstr ""
 
-#: templates/js/stock.js:1192
+#: templates/js/stock.js:1269
 msgid "Serial"
 msgstr ""
 
-#: templates/js/stock.js:1285 templates/js/table_filters.js:149
+#: templates/js/stock.js:1362 templates/js/table_filters.js:171
 msgid "Installed"
 msgstr ""
 
-#: templates/js/stock.js:1310
+#: templates/js/stock.js:1387
 msgid "Install item"
 msgstr ""
 
@@ -6503,148 +6806,153 @@ msgstr ""
 msgid "Validated"
 msgstr ""
 
-#: templates/js/table_filters.js:70 templates/js/table_filters.js:159
-msgid "Is Serialized"
-msgstr ""
-
-#: templates/js/table_filters.js:73 templates/js/table_filters.js:166
-msgid "Serial number GTE"
-msgstr ""
-
-#: templates/js/table_filters.js:74 templates/js/table_filters.js:167
-msgid "Serial number greater than or equal to"
-msgstr ""
-
-#: templates/js/table_filters.js:77 templates/js/table_filters.js:170
-msgid "Serial number LTE"
-msgstr ""
-
-#: templates/js/table_filters.js:78 templates/js/table_filters.js:171
-msgid "Serial number less than or equal to"
+#: templates/js/table_filters.js:71
+msgid "Include locations"
 msgstr ""
 
 #: templates/js/table_filters.js:81 templates/js/table_filters.js:82
-#: templates/js/table_filters.js:162 templates/js/table_filters.js:163
-msgid "Serial number"
-msgstr ""
-
-#: templates/js/table_filters.js:86 templates/js/table_filters.js:180
-msgid "Batch code"
-msgstr ""
-
-#: templates/js/table_filters.js:96 templates/js/table_filters.js:263
-msgid "Active parts"
-msgstr ""
-
-#: templates/js/table_filters.js:97
-msgid "Show stock for active parts"
-msgstr ""
-
-#: templates/js/table_filters.js:102
-msgid "Part is an assembly"
-msgstr ""
-
-#: templates/js/table_filters.js:106
-msgid "Is allocated"
-msgstr ""
-
-#: templates/js/table_filters.js:107
-msgid "Item has been allocated"
-msgstr ""
-
-#: templates/js/table_filters.js:112
-msgid "Include stock in sublocations"
-msgstr ""
-
-#: templates/js/table_filters.js:117
-msgid "Show stock items which are depleted"
-msgstr ""
-
-#: templates/js/table_filters.js:124
-msgid "Show stock items which have expired"
-msgstr ""
-
-#: templates/js/table_filters.js:129
-msgid "Show stock which is close to expiring"
-msgstr ""
-
-#: templates/js/table_filters.js:135
-msgid "Show items which are in stock"
-msgstr ""
-
-#: templates/js/table_filters.js:139
-msgid "In Production"
-msgstr ""
-
-#: templates/js/table_filters.js:140
-msgid "Show items which are in production"
-msgstr ""
-
-#: templates/js/table_filters.js:144
-msgid "Include Variants"
-msgstr ""
-
-#: templates/js/table_filters.js:145
-msgid "Include stock items for variant parts"
-msgstr ""
-
-#: templates/js/table_filters.js:150
-msgid "Show stock items which are installed in another item"
-msgstr ""
-
-#: templates/js/table_filters.js:154
-msgid "Sent to customer"
-msgstr ""
-
-#: templates/js/table_filters.js:155
-msgid "Show items which have been assigned to a customer"
-msgstr ""
-
-#: templates/js/table_filters.js:175 templates/js/table_filters.js:176
-msgid "Stock status"
-msgstr ""
-
-#: templates/js/table_filters.js:209
-msgid "Build status"
-msgstr ""
-
-#: templates/js/table_filters.js:228 templates/js/table_filters.js:245
-msgid "Order status"
-msgstr ""
-
-#: templates/js/table_filters.js:233 templates/js/table_filters.js:250
-msgid "Outstanding"
-msgstr ""
-
-#: templates/js/table_filters.js:273
+#: templates/js/table_filters.js:295
 msgid "Include subcategories"
 msgstr ""
 
-#: templates/js/table_filters.js:274
+#: templates/js/table_filters.js:92 templates/js/table_filters.js:181
+msgid "Is Serialized"
+msgstr ""
+
+#: templates/js/table_filters.js:95 templates/js/table_filters.js:188
+msgid "Serial number GTE"
+msgstr ""
+
+#: templates/js/table_filters.js:96 templates/js/table_filters.js:189
+msgid "Serial number greater than or equal to"
+msgstr ""
+
+#: templates/js/table_filters.js:99 templates/js/table_filters.js:192
+msgid "Serial number LTE"
+msgstr ""
+
+#: templates/js/table_filters.js:100 templates/js/table_filters.js:193
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/table_filters.js:103 templates/js/table_filters.js:104
+#: templates/js/table_filters.js:184 templates/js/table_filters.js:185
+msgid "Serial number"
+msgstr ""
+
+#: templates/js/table_filters.js:108 templates/js/table_filters.js:202
+msgid "Batch code"
+msgstr ""
+
+#: templates/js/table_filters.js:118 templates/js/table_filters.js:285
+msgid "Active parts"
+msgstr ""
+
+#: templates/js/table_filters.js:119
+msgid "Show stock for active parts"
+msgstr ""
+
+#: templates/js/table_filters.js:124
+msgid "Part is an assembly"
+msgstr ""
+
+#: templates/js/table_filters.js:128
+msgid "Is allocated"
+msgstr ""
+
+#: templates/js/table_filters.js:129
+msgid "Item has been allocated"
+msgstr ""
+
+#: templates/js/table_filters.js:134
+msgid "Include stock in sublocations"
+msgstr ""
+
+#: templates/js/table_filters.js:139
+msgid "Show stock items which are depleted"
+msgstr ""
+
+#: templates/js/table_filters.js:146
+msgid "Show stock items which have expired"
+msgstr ""
+
+#: templates/js/table_filters.js:151
+msgid "Show stock which is close to expiring"
+msgstr ""
+
+#: templates/js/table_filters.js:157
+msgid "Show items which are in stock"
+msgstr ""
+
+#: templates/js/table_filters.js:161
+msgid "In Production"
+msgstr ""
+
+#: templates/js/table_filters.js:162
+msgid "Show items which are in production"
+msgstr ""
+
+#: templates/js/table_filters.js:166
+msgid "Include Variants"
+msgstr ""
+
+#: templates/js/table_filters.js:167
+msgid "Include stock items for variant parts"
+msgstr ""
+
+#: templates/js/table_filters.js:172
+msgid "Show stock items which are installed in another item"
+msgstr ""
+
+#: templates/js/table_filters.js:176
+msgid "Sent to customer"
+msgstr ""
+
+#: templates/js/table_filters.js:177
+msgid "Show items which have been assigned to a customer"
+msgstr ""
+
+#: templates/js/table_filters.js:197 templates/js/table_filters.js:198
+msgid "Stock status"
+msgstr ""
+
+#: templates/js/table_filters.js:231
+msgid "Build status"
+msgstr ""
+
+#: templates/js/table_filters.js:250 templates/js/table_filters.js:267
+msgid "Order status"
+msgstr ""
+
+#: templates/js/table_filters.js:255 templates/js/table_filters.js:272
+msgid "Outstanding"
+msgstr ""
+
+#: templates/js/table_filters.js:296
 msgid "Include parts in subcategories"
 msgstr ""
 
-#: templates/js/table_filters.js:278
+#: templates/js/table_filters.js:300
 msgid "Has IPN"
 msgstr ""
 
-#: templates/js/table_filters.js:279
+#: templates/js/table_filters.js:301
 msgid "Part has internal part number"
 msgstr ""
 
-#: templates/js/table_filters.js:284
+#: templates/js/table_filters.js:306
 msgid "Show active parts"
 msgstr ""
 
-#: templates/js/table_filters.js:292
+#: templates/js/table_filters.js:314
 msgid "Stock available"
 msgstr ""
 
-#: templates/js/table_filters.js:308
+#: templates/js/table_filters.js:330
 msgid "Starred"
 msgstr ""
 
-#: templates/js/table_filters.js:320
+#: templates/js/table_filters.js:342
 msgid "Purchasable"
 msgstr ""
 
@@ -6705,6 +7013,10 @@ msgstr ""
 msgid "Form errors exist"
 msgstr ""
 
+#: templates/navbar.html:13
+msgid "Toggle navigation"
+msgstr ""
+
 #: templates/navbar.html:33
 msgid "Buy"
 msgstr ""
@@ -6717,19 +7029,19 @@ msgstr ""
 msgid "Scan Barcode"
 msgstr ""
 
-#: templates/navbar.html:71 users/models.py:36
+#: templates/navbar.html:77 users/models.py:38
 msgid "Admin"
 msgstr ""
 
-#: templates/navbar.html:73
+#: templates/navbar.html:79
 msgid "Logout"
 msgstr ""
 
-#: templates/navbar.html:75 templates/registration/login.html:89
+#: templates/navbar.html:81 templates/registration/login.html:90
 msgid "Login"
 msgstr ""
 
-#: templates/navbar.html:94
+#: templates/navbar.html:104
 msgid "About InvenTree"
 msgstr ""
 
@@ -6737,73 +7049,67 @@ msgstr ""
 msgid "QR data not provided"
 msgstr ""
 
-#: templates/registration/logged_out.html:50
+#: templates/registration/logged_out.html:51
 msgid "You have been logged out"
 msgstr ""
 
-#: templates/registration/logged_out.html:51
-#: templates/registration/password_reset_complete.html:51
-#: templates/registration/password_reset_done.html:58
+#: templates/registration/logged_out.html:52
+#: templates/registration/password_reset_complete.html:52
+#: templates/registration/password_reset_done.html:59
 msgid "Return to login screen"
 msgstr ""
 
-#: templates/registration/login.html:64
+#: templates/registration/login.html:65
 msgid "Enter username"
 msgstr ""
 
-#: templates/registration/login.html:70
+#: templates/registration/login.html:71
 msgid "Password"
 msgstr ""
 
-#: templates/registration/login.html:83
+#: templates/registration/login.html:84
 msgid "Username / password combination is incorrect"
 msgstr ""
 
-#: templates/registration/login.html:95
-#: templates/registration/password_reset_form.html:51
+#: templates/registration/login.html:96
+#: templates/registration/password_reset_form.html:52
 msgid "Forgotten your password?"
 msgstr ""
 
-#: templates/registration/login.html:95
+#: templates/registration/login.html:96
 msgid "Click here to reset"
 msgstr ""
 
-#: templates/registration/password_reset_complete.html:50
+#: templates/registration/password_reset_complete.html:51
 msgid "Password reset complete"
 msgstr ""
 
-#: templates/registration/password_reset_confirm.html:52
-#: templates/registration/password_reset_confirm.html:56
+#: templates/registration/password_reset_confirm.html:53
+#: templates/registration/password_reset_confirm.html:57
 msgid "Change password"
 msgstr ""
 
-#: templates/registration/password_reset_confirm.html:60
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
+#: templates/registration/password_reset_confirm.html:61
+msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
 msgstr ""
 
-#: templates/registration/password_reset_done.html:51
-msgid ""
-"We've emailed you instructions for setting your password, if an account "
-"exists with the email you entered. You should receive them shortly."
+#: templates/registration/password_reset_done.html:52
+msgid "We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly."
 msgstr ""
 
-#: templates/registration/password_reset_done.html:54
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:52
-msgid "Enter your email address below."
+#: templates/registration/password_reset_done.html:55
+msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder."
 msgstr ""
 
 #: templates/registration/password_reset_form.html:53
+msgid "Enter your email address below."
+msgstr ""
+
+#: templates/registration/password_reset_form.html:54
 msgid "An email will be sent with password reset instructions."
 msgstr ""
 
-#: templates/registration/password_reset_form.html:58
+#: templates/registration/password_reset_form.html:59
 msgid "Send email"
 msgstr ""
 
@@ -6851,58 +7157,58 @@ msgstr ""
 msgid "Barcode Actions"
 msgstr ""
 
-#: templates/stock_table.html:36
-msgid "Printing Actions"
-msgstr ""
-
-#: templates/stock_table.html:40
-msgid "Print labels"
-msgstr ""
-
-#: templates/stock_table.html:42
+#: templates/stock_table.html:43
 msgid "Print test reports"
 msgstr ""
 
-#: templates/stock_table.html:53
+#: templates/stock_table.html:55
 msgid "Add to selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:54
+#: templates/stock_table.html:56
 msgid "Remove from selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:55
+#: templates/stock_table.html:57
 msgid "Stocktake selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:56
+#: templates/stock_table.html:58
 msgid "Move selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:56
+#: templates/stock_table.html:58
 msgid "Move stock"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:59
 msgid "Order selected items"
 msgstr ""
 
-#: templates/stock_table.html:58
+#: templates/stock_table.html:60
 msgid "Change status"
 msgstr ""
 
-#: templates/stock_table.html:58
+#: templates/stock_table.html:60
 msgid "Change stock status"
 msgstr ""
 
-#: templates/stock_table.html:61
+#: templates/stock_table.html:63
 msgid "Delete selected items"
 msgstr ""
 
-#: templates/stock_table.html:61
+#: templates/stock_table.html:63
 msgid "Delete Stock"
 msgstr ""
 
+#: templates/yesnolabel.html:4
+msgid "Yes"
+msgstr ""
+
+#: templates/yesnolabel.html:6
+msgid "No"
+msgstr ""
+
 #: users/admin.py:64
 msgid "Users"
 msgstr ""
@@ -6927,34 +7233,34 @@ msgstr ""
 msgid "Important dates"
 msgstr ""
 
-#: users/models.py:165
+#: users/models.py:170
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:173
+#: users/models.py:178
 msgid "Group"
 msgstr ""
 
-#: users/models.py:176
+#: users/models.py:181
 msgid "View"
 msgstr ""
 
-#: users/models.py:176
+#: users/models.py:181
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:183
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:180
+#: users/models.py:185
 msgid "Change"
 msgstr ""
 
-#: users/models.py:180
+#: users/models.py:185
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:187
 msgid "Permission to delete items"
 msgstr ""
diff --git a/InvenTree/locale/es/LC_MESSAGES/django.mo b/InvenTree/locale/es/LC_MESSAGES/django.mo
index 71cbdf3e9d..2343941a2a 100644
Binary files a/InvenTree/locale/es/LC_MESSAGES/django.mo and b/InvenTree/locale/es/LC_MESSAGES/django.mo differ
diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po
index 28684fc524..459ce5092a 100644
--- a/InvenTree/locale/es/LC_MESSAGES/django.po
+++ b/InvenTree/locale/es/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-04-21 09:17+0000\n"
+"POT-Creation-Date: 2021-05-05 17:33+1000\n"
 "PO-Revision-Date: 2021-04-21 09:33\n"
 "Last-Translator: \n"
 "Language-Team: Spanish\n"
@@ -67,35 +67,36 @@ msgstr ""
 msgid "Select Category"
 msgstr ""
 
-#: InvenTree/helpers.py:375 order/models.py:245 order/models.py:344
-#: stock/views.py:1763
-msgid "Invalid quantity provided"
-msgstr ""
-
-#: InvenTree/helpers.py:378
-msgid "Empty serial number string"
-msgstr ""
-
-#: InvenTree/helpers.py:399
+#: InvenTree/helpers.py:377
 #, python-brace-format
 msgid "Duplicate serial: {n}"
 msgstr ""
 
-#: InvenTree/helpers.py:403 InvenTree/helpers.py:406 InvenTree/helpers.py:409
+#: InvenTree/helpers.py:384 order/models.py:245 order/models.py:353
+#: stock/views.py:1763
+msgid "Invalid quantity provided"
+msgstr ""
+
+#: InvenTree/helpers.py:387
+msgid "Empty serial number string"
+msgstr ""
+
+#: InvenTree/helpers.py:409 InvenTree/helpers.py:412 InvenTree/helpers.py:415
+#: InvenTree/helpers.py:440
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:445
 #, python-brace-format
 msgid "Duplicate serial: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:422
+#: InvenTree/helpers.py:453
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:426
+#: InvenTree/helpers.py:457
 #, python-brace-format
 msgid "Number of unique serial number ({s}) must match quantity ({q})"
 msgstr ""
@@ -140,7 +141,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_base.html:72
 #: company/templates/company/supplier_part_base.html:71
 #: company/templates/company/supplier_part_detail.html:31 label/models.py:108
-#: order/models.py:101 order/templates/order/purchase_order_detail.html:168
+#: order/models.py:101 order/templates/order/purchase_order_detail.html:143
 #: part/models.py:710 part/templates/part/detail.html:54
 #: part/templates/part/set_category.html:14 report/models.py:192
 #: report/models.py:505 report/models.py:544
@@ -165,23 +166,23 @@ msgstr ""
 msgid "parent"
 msgstr ""
 
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:491
 msgid "English"
 msgstr ""
 
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:492
 msgid "French"
 msgstr ""
 
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:493
 msgid "German"
 msgstr ""
 
-#: InvenTree/settings.py:496
+#: InvenTree/settings.py:494
 msgid "Polish"
 msgstr ""
 
-#: InvenTree/settings.py:497
+#: InvenTree/settings.py:495
 msgid "Turkish"
 msgstr ""
 
@@ -375,16 +376,16 @@ msgstr ""
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1227
+#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1241
 #: build/templates/build/allocation_card.html:23
 #: build/templates/build/auto_allocate.html:17
 #: build/templates/build/build_base.html:123
 #: build/templates/build/detail.html:31 common/models.py:703
 #: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77
 #: order/forms.py:188 order/forms.py:205 order/forms.py:239 order/forms.py:261
-#: order/forms.py:278 order/models.py:593 order/models.py:784
+#: order/forms.py:278 order/models.py:603 order/models.py:794
 #: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:200
+#: order/templates/order/purchase_order_detail.html:175
 #: order/templates/order/sales_order_detail.html:70
 #: order/templates/order/sales_order_detail.html:77
 #: order/templates/order/sales_order_detail.html:159
@@ -458,7 +459,7 @@ msgid "Location of completed parts"
 msgstr ""
 
 #: build/forms.py:215 build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:59 order/models.py:445
+#: build/templates/build/detail.html:59 order/models.py:455
 #: order/templates/order/receive_parts.html:24
 #: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
 #: templates/js/barcode.js:119 templates/js/build.js:770
@@ -508,7 +509,7 @@ msgstr ""
 #: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55
 #: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183
 #: templates/InvenTree/search.html:185
-#: templates/InvenTree/settings/tabs.html:31 users/models.py:41
+#: templates/InvenTree/settings/tabs.html:31 users/models.py:43
 msgid "Build Orders"
 msgstr ""
 
@@ -516,8 +517,8 @@ msgstr ""
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:127 order/models.py:99 order/models.py:595
-#: order/templates/order/purchase_order_detail.html:195
+#: build/models.py:127 order/models.py:99 order/models.py:605
+#: order/templates/order/purchase_order_detail.html:170
 #: order/templates/order/sales_order_detail.html:219 part/models.py:2187
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197
@@ -540,10 +541,10 @@ msgstr ""
 
 #: build/models.py:152 build/templates/build/auto_allocate.html:16
 #: build/templates/build/build_base.html:118
-#: build/templates/build/detail.html:26 company/models.py:669
-#: order/models.py:637 order/models.py:669
+#: build/templates/build/detail.html:26 company/models.py:688
+#: order/models.py:647 order/models.py:679
 #: order/templates/order/order_wizard/select_parts.html:30
-#: order/templates/order/purchase_order_detail.html:156
+#: order/templates/order/purchase_order_detail.html:131
 #: order/templates/order/receive_parts.html:19
 #: order/templates/order/sales_order_detail.html:207 part/models.py:321
 #: part/models.py:1876 part/models.py:1888 part/models.py:1906
@@ -628,7 +629,7 @@ msgstr ""
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:223 order/models.py:451
+#: build/models.py:223 order/models.py:461
 msgid "Target completion date"
 msgstr ""
 
@@ -678,9 +679,9 @@ msgstr ""
 #: company/models.py:135 company/models.py:501
 #: company/templates/company/navbar.html:70
 #: company/templates/company/navbar.html:73 order/models.py:123
-#: order/models.py:597 order/templates/order/po_navbar.html:29
+#: order/models.py:607 order/templates/order/po_navbar.html:29
 #: order/templates/order/po_navbar.html:32
-#: order/templates/order/purchase_order_detail.html:234
+#: order/templates/order/purchase_order_detail.html:209
 #: order/templates/order/sales_order_detail.html:264
 #: order/templates/order/so_navbar.html:33
 #: order/templates/order/so_navbar.html:36 part/models.py:871
@@ -713,47 +714,47 @@ msgstr ""
 msgid "Completed build output"
 msgstr ""
 
-#: build/models.py:1118
+#: build/models.py:1132
 msgid "BuildItem must be unique for build, stock_item and install_into"
 msgstr ""
 
-#: build/models.py:1143
+#: build/models.py:1157
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1147
+#: build/models.py:1161
 #, python-brace-format
 msgid "Selected stock item not found in BOM for part '{p}'"
 msgstr ""
 
-#: build/models.py:1151
+#: build/models.py:1165
 #, python-brace-format
 msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
 msgstr ""
 
-#: build/models.py:1158 order/models.py:758
+#: build/models.py:1172 order/models.py:768
 msgid "StockItem is over-allocated"
 msgstr ""
 
-#: build/models.py:1162 order/models.py:761
+#: build/models.py:1176 order/models.py:771
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1166
+#: build/models.py:1180
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1206 stock/templates/stock/item_base.html:306
+#: build/models.py:1220 stock/templates/stock/item_base.html:306
 #: templates/InvenTree/search.html:183 templates/js/build.js:714
 #: templates/navbar.html:29
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1207
+#: build/models.py:1221
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1214 part/templates/part/allocation.html:18
+#: build/models.py:1228 part/templates/part/allocation.html:18
 #: part/templates/part/allocation.html:24
 #: part/templates/part/allocation.html:31
 #: part/templates/part/allocation.html:49
@@ -765,19 +766,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1215
+#: build/models.py:1229
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1228
+#: build/models.py:1242
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1236
+#: build/models.py:1250
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1237
+#: build/models.py:1251
 msgid "Destination stock item"
 msgstr ""
 
@@ -801,7 +802,7 @@ msgstr ""
 msgid "Unallocate stock"
 msgstr ""
 
-#: build/templates/build/allocate.html:26 build/views.py:308 build/views.py:794
+#: build/templates/build/allocate.html:26 build/views.py:319 build/views.py:805
 msgid "Unallocate Stock"
 msgstr ""
 
@@ -811,7 +812,7 @@ msgstr ""
 
 #: build/templates/build/allocate.html:30
 #: company/templates/company/detail_manufacturer_part.html:33
-#: company/templates/company/detail_supplier_part.html:32 order/views.py:794
+#: company/templates/company/detail_supplier_part.html:32 order/views.py:795
 #: part/templates/part/category.html:127
 msgid "Order Parts"
 msgstr ""
@@ -954,7 +955,7 @@ msgid "Progress"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:84 order/models.py:667
+#: build/templates/build/detail.html:84 order/models.py:677
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:33
 #: order/templates/order/sales_order_ship.html:25
@@ -1139,7 +1140,7 @@ msgstr ""
 msgid "Alter the quantity of stock allocated to the build output"
 msgstr ""
 
-#: build/templates/build/index.html:28 build/views.py:667
+#: build/templates/build/index.html:28 build/views.py:678
 msgid "New Build Order"
 msgstr ""
 
@@ -1226,141 +1227,145 @@ msgstr ""
 msgid "Create Build Output"
 msgstr ""
 
-#: build/views.py:173 stock/models.py:969 stock/views.py:1789
+#: build/views.py:168
+msgid "Maximum output quantity is "
+msgstr ""
+
+#: build/views.py:184 stock/models.py:969 stock/views.py:1789
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: build/views.py:182
+#: build/views.py:193
 msgid "Serial numbers required for trackable build output"
 msgstr ""
 
-#: build/views.py:248
+#: build/views.py:259
 msgid "Delete Build Output"
 msgstr ""
 
-#: build/views.py:269 build/views.py:359
+#: build/views.py:280 build/views.py:370
 msgid "Confirm unallocation of build stock"
 msgstr ""
 
-#: build/views.py:270 build/views.py:360 stock/views.py:425
+#: build/views.py:281 build/views.py:371 stock/views.py:425
 msgid "Check the confirmation box"
 msgstr ""
 
-#: build/views.py:282
+#: build/views.py:293
 msgid "Build output does not match build"
 msgstr ""
 
-#: build/views.py:284 build/views.py:485
+#: build/views.py:295 build/views.py:496
 msgid "Build output must be specified"
 msgstr ""
 
-#: build/views.py:296
+#: build/views.py:307
 msgid "Build output deleted"
 msgstr ""
 
-#: build/views.py:394
+#: build/views.py:405
 msgid "Complete Build Order"
 msgstr ""
 
-#: build/views.py:400
+#: build/views.py:411
 msgid "Build order cannot be completed - incomplete outputs remain"
 msgstr ""
 
-#: build/views.py:411
+#: build/views.py:422
 msgid "Completed build order"
 msgstr ""
 
-#: build/views.py:427
+#: build/views.py:438
 msgid "Complete Build Output"
 msgstr ""
 
-#: build/views.py:469
+#: build/views.py:480
 msgid "Invalid stock status value selected"
 msgstr ""
 
-#: build/views.py:476
+#: build/views.py:487
 msgid "Quantity to complete cannot exceed build output quantity"
 msgstr ""
 
-#: build/views.py:482
+#: build/views.py:493
 msgid "Confirm completion of incomplete build"
 msgstr ""
 
-#: build/views.py:581
+#: build/views.py:592
 msgid "Build output completed"
 msgstr ""
 
-#: build/views.py:721
+#: build/views.py:732
 msgid "Created new build"
 msgstr ""
 
-#: build/views.py:742
+#: build/views.py:753
 msgid "Edit Build Order Details"
 msgstr ""
 
-#: build/views.py:775
+#: build/views.py:786
 msgid "Edited build"
 msgstr ""
 
-#: build/views.py:784
+#: build/views.py:795
 msgid "Delete Build Order"
 msgstr ""
 
-#: build/views.py:799
+#: build/views.py:810
 msgid "Removed parts from build allocation"
 msgstr ""
 
-#: build/views.py:811
+#: build/views.py:822
 msgid "Allocate stock to build output"
 msgstr ""
 
-#: build/views.py:854
+#: build/views.py:865
 msgid "Item must be currently in stock"
 msgstr ""
 
-#: build/views.py:860
+#: build/views.py:871
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/views.py:861 templates/js/bom.js:230 templates/js/build.js:575
+#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:575
 #: templates/js/build.js:838 templates/js/build.js:1021
 msgid "Available"
 msgstr ""
 
-#: build/views.py:863
+#: build/views.py:874
 msgid "Stock item must be selected"
 msgstr ""
 
-#: build/views.py:1026
+#: build/views.py:1037
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: build/views.py:1030
+#: build/views.py:1041
 msgid "Updated Build Item"
 msgstr ""
 
-#: build/views.py:1059
+#: build/views.py:1070
 msgid "Add Build Order Attachment"
 msgstr ""
 
-#: build/views.py:1072 order/views.py:110 order/views.py:162 part/views.py:172
+#: build/views.py:1083 order/views.py:110 order/views.py:162 part/views.py:172
 #: stock/views.py:277
 msgid "Added attachment"
 msgstr ""
 
-#: build/views.py:1108 order/views.py:189 order/views.py:210
+#: build/views.py:1119 order/views.py:189 order/views.py:210
 msgid "Edit Attachment"
 msgstr ""
 
-#: build/views.py:1118 order/views.py:193 order/views.py:214
+#: build/views.py:1129 order/views.py:193 order/views.py:214
 msgid "Attachment updated"
 msgstr ""
 
-#: build/views.py:1128 order/views.py:229 order/views.py:243
+#: build/views.py:1139 order/views.py:229 order/views.py:243
 msgid "Delete Attachment"
 msgstr ""
 
-#: build/views.py:1133 order/views.py:235 order/views.py:249 stock/views.py:333
+#: build/views.py:1144 order/views.py:235 order/views.py:249 stock/views.py:333
 msgid "Deleted attachment"
 msgstr ""
 
@@ -1766,7 +1771,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_detail.html:26
 #: company/templates/company/supplier_part_base.html:101
 #: company/templates/company/supplier_part_detail.html:35
-#: order/templates/order/purchase_order_detail.html:183 part/bom.py:171
+#: order/templates/order/purchase_order_detail.html:158 part/bom.py:171
 #: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307
 msgid "MPN"
 msgstr ""
@@ -1865,7 +1870,7 @@ msgstr ""
 msgid "Base Part"
 msgstr ""
 
-#: company/models.py:312 company/models.py:463 order/views.py:1372
+#: company/models.py:312 company/models.py:463 order/views.py:1384
 msgid "Select part"
 msgstr ""
 
@@ -1905,7 +1910,7 @@ msgstr ""
 
 #: company/models.py:475 company/templates/company/supplier_part_base.html:88
 #: company/templates/company/supplier_part_detail.html:26
-#: order/templates/order/purchase_order_detail.html:174 part/bom.py:176
+#: order/templates/order/purchase_order_detail.html:149 part/bom.py:176
 #: part/bom.py:287
 msgid "SKU"
 msgstr ""
@@ -2017,7 +2022,8 @@ msgstr ""
 
 #: company/templates/company/delete.html:12
 #, python-format
-msgid "There are %(count)s parts sourced from this company.<br>\n"
+msgid ""
+"There are %(count)s parts sourced from this company.<br>\n"
 "If this supplier is deleted, these supplier part entries will also be deleted."
 msgstr ""
 
@@ -2033,7 +2039,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/detail.html:67 order/models.py:440
+#: company/templates/company/detail.html:67 order/models.py:450
 #: order/templates/order/sales_order_base.html:92 stock/models.py:415
 #: stock/models.py:416 stock/templates/stock/item_base.html:251
 #: templates/js/company.js:40 templates/js/order.js:267
@@ -2122,13 +2128,13 @@ msgstr ""
 
 #: company/templates/company/detail_supplier_part.html:21
 #: order/templates/order/order_wizard/select_parts.html:42
-#: order/templates/order/purchase_order_detail.html:75
+#: order/templates/order/purchase_order_detail.html:50
 msgid "Create new supplier part"
 msgstr ""
 
 #: company/templates/company/detail_supplier_part.html:22
 #: company/templates/company/manufacturer_part_suppliers.html:17
-#: order/templates/order/purchase_order_detail.html:74
+#: order/templates/order/purchase_order_detail.html:49
 #: part/templates/part/supplier.html:17 templates/js/stock.js:1163
 msgid "New Supplier Part"
 msgstr ""
@@ -2226,7 +2232,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_suppliers.html:22
 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44
 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22
-#: stock/views.py:1002 users/models.py:184
+#: stock/views.py:1002 users/models.py:187
 msgid "Delete"
 msgstr ""
 
@@ -2252,7 +2258,7 @@ msgstr ""
 #: stock/templates/stock/location_navbar.html:22
 #: stock/templates/stock/location_navbar.html:29
 #: templates/InvenTree/search.html:198 templates/js/stock.js:968
-#: templates/stats.html:72 templates/stats.html:81 users/models.py:40
+#: templates/stats.html:72 templates/stats.html:81 users/models.py:42
 msgid "Stock Items"
 msgstr ""
 
@@ -2266,7 +2272,7 @@ msgstr ""
 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228
 #: templates/InvenTree/search.html:345
 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:46
-#: users/models.py:43
+#: users/models.py:45
 msgid "Sales Orders"
 msgstr ""
 
@@ -2278,7 +2284,7 @@ msgstr ""
 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205
 #: templates/InvenTree/search.html:325
 #: templates/InvenTree/settings/tabs.html:34 templates/navbar.html:37
-#: users/models.py:42
+#: users/models.py:44
 msgid "Purchase Orders"
 msgstr ""
 
@@ -2357,7 +2363,7 @@ msgid "Pricing Information"
 msgstr ""
 
 #: company/templates/company/supplier_part_pricing.html:19 company/views.py:794
-#: part/templates/part/sale_prices.html:17 part/views.py:2624
+#: part/templates/part/sale_prices.html:17 part/views.py:2636
 msgid "Add Price Break"
 msgstr ""
 
@@ -2467,15 +2473,15 @@ msgstr ""
 msgid "Delete Supplier Part"
 msgstr ""
 
-#: company/views.py:799 part/views.py:2628
+#: company/views.py:799 part/views.py:2640
 msgid "Added new price break"
 msgstr ""
 
-#: company/views.py:855 part/views.py:2672
+#: company/views.py:855 part/views.py:2684
 msgid "Edit Price Break"
 msgstr ""
 
-#: company/views.py:870 part/views.py:2686
+#: company/views.py:870 part/views.py:2698
 msgid "Delete Price Break"
 msgstr ""
 
@@ -2565,7 +2571,7 @@ msgstr ""
 msgid "Enter sales order number"
 msgstr ""
 
-#: order/forms.py:145 order/models.py:452
+#: order/forms.py:145 order/models.py:462
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
@@ -2601,7 +2607,7 @@ msgstr ""
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:182 order/models.py:445
+#: order/models.py:182 order/models.py:455
 msgid "Purchase order status"
 msgstr ""
 
@@ -2642,8 +2648,8 @@ msgstr ""
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:243 order/models.py:342 part/views.py:1586
-#: stock/models.py:270 stock/models.py:953
+#: order/models.py:243 part/views.py:1586 stock/models.py:270
+#: stock/models.py:953
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -2651,120 +2657,128 @@ msgstr ""
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:337
+#: order/models.py:344
 msgid "Lines can only be received against an order marked as 'Placed'"
 msgstr ""
 
-#: order/models.py:359
+#: order/models.py:348
+msgid "Quantity must be an integer"
+msgstr ""
+
+#: order/models.py:350
+msgid "Quantity must be a positive number"
+msgstr ""
+
+#: order/models.py:369
 msgid "Received items"
 msgstr ""
 
-#: order/models.py:441
+#: order/models.py:451
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:455 templates/js/order.js:303
+#: order/models.py:465 templates/js/order.js:303
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:462
+#: order/models.py:472
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:506
+#: order/models.py:516
 msgid "SalesOrder cannot be shipped as it is not currently pending"
 msgstr ""
 
-#: order/models.py:593
+#: order/models.py:603
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:595
+#: order/models.py:605
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:597
+#: order/models.py:607
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:623 order/models.py:667
+#: order/models.py:633 order/models.py:677
 #: part/templates/part/allocation.html:17
 #: part/templates/part/allocation.html:45
 msgid "Order"
 msgstr ""
 
-#: order/models.py:624 order/templates/order/order_base.html:9
+#: order/models.py:634 order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:24
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:313 templates/js/order.js:148
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:638
+#: order/models.py:648
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:641 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:214
+#: order/models.py:651 order/templates/order/order_base.html:131
+#: order/templates/order/purchase_order_detail.html:189
 #: order/templates/order/receive_parts.html:22
 #: order/templates/order/sales_order_base.html:131
 msgid "Received"
 msgstr ""
 
-#: order/models.py:641
+#: order/models.py:651
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:648 stock/models.py:508
+#: order/models.py:658 stock/models.py:508
 #: stock/templates/stock/item_base.html:320
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:649
+#: order/models.py:659
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:743 order/models.py:745
+#: order/models.py:753 order/models.py:755
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:749
+#: order/models.py:759
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:751
+#: order/models.py:761
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:754
+#: order/models.py:764
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:764
+#: order/models.py:774
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:769
+#: order/models.py:779
 msgid "Line"
 msgstr ""
 
-#: order/models.py:780
+#: order/models.py:790
 msgid "Item"
 msgstr ""
 
-#: order/models.py:781
+#: order/models.py:791
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:784
+#: order/models.py:794
 msgid "Enter stock allocation quantity"
 msgstr ""
 
@@ -2812,9 +2826,22 @@ msgstr ""
 msgid "Issued"
 msgstr ""
 
-#: order/templates/order/order_cancel.html:7
-#: order/templates/order/sales_order_cancel.html:9
-msgid "Cancelling this order means that the order will no longer be editable."
+#: order/templates/order/order_base.html:180
+#: order/templates/order/purchase_order_detail.html:100
+#: part/templates/part/category.html:185 part/templates/part/category.html:227
+#: stock/templates/stock/location.html:191 templates/js/stock.js:708
+#: templates/js/stock.js:1169
+msgid "New Location"
+msgstr ""
+
+#: order/templates/order/order_base.html:181
+#: order/templates/order/purchase_order_detail.html:101
+#: stock/templates/stock/location.html:42
+msgid "Create new stock location"
+msgstr ""
+
+#: order/templates/order/order_cancel.html:8
+msgid "Cancelling this order means that the order and line items will no longer be editable."
 msgstr ""
 
 #: order/templates/order/order_complete.html:7
@@ -2826,10 +2853,10 @@ msgid "This order has line items which have not been marked as received."
 msgstr ""
 
 #: order/templates/order/order_complete.html:11
-msgid "Marking this order as complete will remove these line items."
+msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: order/templates/order/order_issue.html:7
+#: order/templates/order/order_issue.html:8
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
@@ -2881,11 +2908,13 @@ msgid "Select Purchase Order"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_pos.html:45
-msgid "Create new purchase order for {{ supplier.name }}"
+#, python-format
+msgid "Create new purchase order for %(name)s"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_pos.html:68
-msgid "Select a purchase order for"
+#, python-format
+msgid "Select a purchase order for %(name)s"
 msgstr ""
 
 #: order/templates/order/po_attachments.html:12
@@ -2907,43 +2936,29 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py:1108
-#: order/views.py:1191
+#: order/templates/order/sales_order_detail.html:22 order/views.py:1120
+#: order/views.py:1203
 msgid "Add Line Item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:45
-#: order/templates/order/purchase_order_detail.html:125
-#: part/templates/part/category.html:185 part/templates/part/category.html:227
-#: stock/templates/stock/location.html:191 templates/js/stock.js:708
-#: templates/js/stock.js:1169
-msgid "New Location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:46
-#: order/templates/order/purchase_order_detail.html:126
-#: stock/templates/stock/location.html:42
-msgid "Create new stock location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:139
+#: order/templates/order/purchase_order_detail.html:114
 msgid "No line items found"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:205
+#: order/templates/order/purchase_order_detail.html:180
 msgid "Unit Price"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:246
+#: order/templates/order/purchase_order_detail.html:221
 #: order/templates/order/sales_order_detail.html:294
 msgid "Edit line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:247
+#: order/templates/order/purchase_order_detail.html:222
 msgid "Delete line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:252
+#: order/templates/order/purchase_order_detail.html:227
 msgid "Receive line item"
 msgstr ""
 
@@ -2966,7 +2981,7 @@ msgstr ""
 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114
 #: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:577
 #: templates/navbar.html:23 templates/stats.html:59 templates/stats.html:68
-#: users/models.py:38
+#: users/models.py:40
 msgid "Parts"
 msgstr ""
 
@@ -3019,6 +3034,10 @@ msgstr ""
 msgid "Warning"
 msgstr ""
 
+#: order/templates/order/sales_order_cancel.html:9
+msgid "Cancelling this order means that the order will no longer be editable."
+msgstr ""
+
 #: order/templates/order/sales_order_detail.html:13
 msgid "Sales Order Items"
 msgstr ""
@@ -3213,65 +3232,65 @@ msgstr ""
 msgid "No lines specified"
 msgstr ""
 
-#: order/views.py:1060
+#: order/views.py:1069
 #, python-brace-format
 msgid "Ordered {n} parts"
 msgstr ""
 
-#: order/views.py:1117
+#: order/views.py:1129
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/views.py:1123
+#: order/views.py:1135
 msgid "Supplier must match for Part and Order"
 msgstr ""
 
-#: order/views.py:1242 order/views.py:1260
+#: order/views.py:1254 order/views.py:1272
 msgid "Edit Line Item"
 msgstr ""
 
-#: order/views.py:1276 order/views.py:1288
+#: order/views.py:1288 order/views.py:1300
 msgid "Delete Line Item"
 msgstr ""
 
-#: order/views.py:1281 order/views.py:1293
+#: order/views.py:1293 order/views.py:1305
 msgid "Deleted line item"
 msgstr ""
 
-#: order/views.py:1306
+#: order/views.py:1318
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: order/views.py:1351
+#: order/views.py:1363
 #, python-brace-format
 msgid "Allocated {n} items"
 msgstr ""
 
-#: order/views.py:1367
+#: order/views.py:1379
 msgid "Select line item"
 msgstr ""
 
-#: order/views.py:1398
+#: order/views.py:1410
 msgid "No matching item for serial"
 msgstr ""
 
-#: order/views.py:1408
+#: order/views.py:1420
 msgid "is not in stock"
 msgstr ""
 
-#: order/views.py:1416
+#: order/views.py:1428
 msgid "already allocated to an order"
 msgstr ""
 
-#: order/views.py:1470
+#: order/views.py:1482
 msgid "Allocate Stock to Order"
 msgstr ""
 
-#: order/views.py:1544
+#: order/views.py:1556
 msgid "Edit Allocation Quantity"
 msgstr ""
 
-#: order/views.py:1559
+#: order/views.py:1571
 msgid "Remove allocation"
 msgstr ""
 
@@ -3457,7 +3476,7 @@ msgstr ""
 #: part/models.py:83 part/templates/part/category.html:23
 #: part/templates/part/category.html:94 part/templates/part/category.html:141
 #: templates/InvenTree/search.html:127 templates/stats.html:63
-#: users/models.py:37
+#: users/models.py:39
 msgid "Part Categories"
 msgstr ""
 
@@ -4004,7 +4023,7 @@ msgstr ""
 msgid "All parts"
 msgstr ""
 
-#: part/templates/part/category.html:29 part/views.py:2270
+#: part/templates/part/category.html:29 part/views.py:2282
 msgid "Create new part category"
 msgstr ""
 
@@ -4694,63 +4713,63 @@ msgstr ""
 msgid "Part Pricing"
 msgstr ""
 
-#: part/views.py:2069
+#: part/views.py:2081
 msgid "Create Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2079
+#: part/views.py:2091
 msgid "Edit Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2086
+#: part/views.py:2098
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2094
+#: part/views.py:2106
 msgid "Create Part Parameter"
 msgstr ""
 
-#: part/views.py:2144
+#: part/views.py:2156
 msgid "Edit Part Parameter"
 msgstr ""
 
-#: part/views.py:2158
+#: part/views.py:2170
 msgid "Delete Part Parameter"
 msgstr ""
 
-#: part/views.py:2218
+#: part/views.py:2230
 msgid "Edit Part Category"
 msgstr ""
 
-#: part/views.py:2256
+#: part/views.py:2268
 msgid "Delete Part Category"
 msgstr ""
 
-#: part/views.py:2262
+#: part/views.py:2274
 msgid "Part category was deleted"
 msgstr ""
 
-#: part/views.py:2314
+#: part/views.py:2326
 msgid "Create Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2415
+#: part/views.py:2427
 msgid "Edit Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2471
+#: part/views.py:2483
 msgid "Delete Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2490
+#: part/views.py:2502
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/views.py:2560
+#: part/views.py:2572
 msgid "Edit BOM item"
 msgstr ""
 
-#: part/views.py:2616
+#: part/views.py:2628
 msgid "Confim BOM item deletion"
 msgstr ""
 
@@ -5301,15 +5320,15 @@ msgid "Stock adjustment actions"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:164
-#: stock/templates/stock/location.html:65 templates/stock_table.html:56
+#: stock/templates/stock/location.html:65 templates/stock_table.html:57
 msgid "Count stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:167 templates/stock_table.html:54
+#: stock/templates/stock/item_base.html:167 templates/stock_table.html:55
 msgid "Add stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:170 templates/stock_table.html:55
+#: stock/templates/stock/item_base.html:170 templates/stock_table.html:56
 msgid "Remove stock"
 msgstr ""
 
@@ -5503,7 +5522,7 @@ msgid "Stock Details"
 msgstr ""
 
 #: stock/templates/stock/location.html:117 templates/InvenTree/search.html:279
-#: templates/stats.html:76 users/models.py:39
+#: templates/stats.html:76 users/models.py:41
 msgid "Stock Locations"
 msgstr ""
 
@@ -5689,7 +5708,7 @@ msgstr ""
 msgid "Add Stock Items"
 msgstr ""
 
-#: stock/views.py:1001 users/models.py:180
+#: stock/views.py:1001 users/models.py:183
 msgid "Add"
 msgstr ""
 
@@ -5867,6 +5886,31 @@ msgstr ""
 msgid "No stock location set"
 msgstr ""
 
+#: templates/InvenTree/settings/appearance.html:10
+msgid "Theme Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:17
+msgid "Color Themes"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:29
+#, python-format
+msgid ""
+"\n"
+"        The CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
+"        Please select another color theme :)\n"
+"    "
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:39
+msgid "Language"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:61
+msgid "Set Language"
+msgstr ""
+
 #: templates/InvenTree/settings/build.html:10
 msgid "Build Order Settings"
 msgstr ""
@@ -5950,7 +5994,7 @@ msgstr ""
 msgid "Stock Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:49
+#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:50
 msgid "Stock Options"
 msgstr ""
 
@@ -5964,7 +6008,7 @@ msgid "Account"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:9
-msgid "Theme"
+msgid "Appearance"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:13
@@ -5983,22 +6027,6 @@ msgstr ""
 msgid "Categories"
 msgstr ""
 
-#: templates/InvenTree/settings/theme.html:10
-msgid "Theme Settings"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:17
-msgid "Color Themes"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:29
-#, python-format
-msgid "\n"
-"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
-"\t\tPlease select another color theme :)\n"
-"\t"
-msgstr ""
-
 #: templates/InvenTree/settings/user.html:16
 msgid "User Information"
 msgstr ""
@@ -6061,13 +6089,23 @@ msgid "View Code on GitHub"
 msgstr ""
 
 #: templates/about.html:63
-msgid "Get the App"
+msgid "Credits"
 msgstr ""
 
 #: templates/about.html:68
+msgid "Mobile App"
+msgstr ""
+
+#: templates/about.html:73
 msgid "Submit Bug Report"
 msgstr ""
 
+#: templates/about.html:82 templates/js/modals.js:550
+#: templates/js/modals.js:809 templates/modals.html:28 templates/modals.html:52
+#: templates/modals.html:93
+msgid "Close"
+msgstr ""
+
 #: templates/attachment_table.html:6
 msgid "Add Attachment"
 msgstr ""
@@ -6263,7 +6301,7 @@ msgid "Quantity Per"
 msgstr ""
 
 #: templates/js/build.js:638 templates/js/build.js:1056
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order stock"
 msgstr ""
 
@@ -6396,11 +6434,6 @@ msgstr ""
 msgid "Submit"
 msgstr ""
 
-#: templates/js/modals.js:550 templates/js/modals.js:809
-#: templates/modals.html:28 templates/modals.html:52 templates/modals.html:93
-msgid "Close"
-msgstr ""
-
 #: templates/js/modals.js:760
 msgid "Invalid response from server"
 msgstr ""
@@ -6974,6 +7007,10 @@ msgstr ""
 msgid "Form errors exist"
 msgstr ""
 
+#: templates/navbar.html:13
+msgid "Toggle navigation"
+msgstr ""
+
 #: templates/navbar.html:33
 msgid "Buy"
 msgstr ""
@@ -6986,7 +7023,7 @@ msgstr ""
 msgid "Scan Barcode"
 msgstr ""
 
-#: templates/navbar.html:77 users/models.py:36
+#: templates/navbar.html:77 users/models.py:38
 msgid "Admin"
 msgstr ""
 
@@ -7118,43 +7155,43 @@ msgstr ""
 msgid "Print test reports"
 msgstr ""
 
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
 msgid "Add to selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:55
+#: templates/stock_table.html:56
 msgid "Remove from selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:56
+#: templates/stock_table.html:57
 msgid "Stocktake selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move stock"
 msgstr ""
 
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order selected items"
 msgstr ""
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change status"
 msgstr ""
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change stock status"
 msgstr ""
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete selected items"
 msgstr ""
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete Stock"
 msgstr ""
 
@@ -7190,34 +7227,34 @@ msgstr ""
 msgid "Important dates"
 msgstr ""
 
-#: users/models.py:167
+#: users/models.py:170
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:175
+#: users/models.py:178
 msgid "Group"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "View"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:180
+#: users/models.py:183
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Change"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:184
+#: users/models.py:187
 msgid "Permission to delete items"
 msgstr ""
diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.mo b/InvenTree/locale/fr/LC_MESSAGES/django.mo
index 2c90dd0c81..71c5e16916 100644
Binary files a/InvenTree/locale/fr/LC_MESSAGES/django.mo and b/InvenTree/locale/fr/LC_MESSAGES/django.mo differ
diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po
index f344b4140c..ae5d861fa2 100644
--- a/InvenTree/locale/fr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/fr/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-04-21 09:17+0000\n"
+"POT-Creation-Date: 2021-05-05 17:33+1000\n"
 "PO-Revision-Date: 2021-04-21 09:33\n"
 "Last-Translator: \n"
 "Language-Team: French\n"
@@ -67,35 +67,36 @@ msgstr ""
 msgid "Select Category"
 msgstr ""
 
-#: InvenTree/helpers.py:375 order/models.py:245 order/models.py:344
-#: stock/views.py:1763
-msgid "Invalid quantity provided"
-msgstr ""
-
-#: InvenTree/helpers.py:378
-msgid "Empty serial number string"
-msgstr ""
-
-#: InvenTree/helpers.py:399
+#: InvenTree/helpers.py:377
 #, python-brace-format
 msgid "Duplicate serial: {n}"
 msgstr ""
 
-#: InvenTree/helpers.py:403 InvenTree/helpers.py:406 InvenTree/helpers.py:409
+#: InvenTree/helpers.py:384 order/models.py:245 order/models.py:353
+#: stock/views.py:1763
+msgid "Invalid quantity provided"
+msgstr ""
+
+#: InvenTree/helpers.py:387
+msgid "Empty serial number string"
+msgstr ""
+
+#: InvenTree/helpers.py:409 InvenTree/helpers.py:412 InvenTree/helpers.py:415
+#: InvenTree/helpers.py:440
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:445
 #, python-brace-format
 msgid "Duplicate serial: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:422
+#: InvenTree/helpers.py:453
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:426
+#: InvenTree/helpers.py:457
 #, python-brace-format
 msgid "Number of unique serial number ({s}) must match quantity ({q})"
 msgstr ""
@@ -140,7 +141,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_base.html:72
 #: company/templates/company/supplier_part_base.html:71
 #: company/templates/company/supplier_part_detail.html:31 label/models.py:108
-#: order/models.py:101 order/templates/order/purchase_order_detail.html:168
+#: order/models.py:101 order/templates/order/purchase_order_detail.html:143
 #: part/models.py:710 part/templates/part/detail.html:54
 #: part/templates/part/set_category.html:14 report/models.py:192
 #: report/models.py:505 report/models.py:544
@@ -165,23 +166,23 @@ msgstr ""
 msgid "parent"
 msgstr ""
 
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:491
 msgid "English"
 msgstr ""
 
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:492
 msgid "French"
 msgstr ""
 
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:493
 msgid "German"
 msgstr ""
 
-#: InvenTree/settings.py:496
+#: InvenTree/settings.py:494
 msgid "Polish"
 msgstr ""
 
-#: InvenTree/settings.py:497
+#: InvenTree/settings.py:495
 msgid "Turkish"
 msgstr ""
 
@@ -375,16 +376,16 @@ msgstr ""
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1227
+#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1241
 #: build/templates/build/allocation_card.html:23
 #: build/templates/build/auto_allocate.html:17
 #: build/templates/build/build_base.html:123
 #: build/templates/build/detail.html:31 common/models.py:703
 #: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77
 #: order/forms.py:188 order/forms.py:205 order/forms.py:239 order/forms.py:261
-#: order/forms.py:278 order/models.py:593 order/models.py:784
+#: order/forms.py:278 order/models.py:603 order/models.py:794
 #: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:200
+#: order/templates/order/purchase_order_detail.html:175
 #: order/templates/order/sales_order_detail.html:70
 #: order/templates/order/sales_order_detail.html:77
 #: order/templates/order/sales_order_detail.html:159
@@ -458,7 +459,7 @@ msgid "Location of completed parts"
 msgstr ""
 
 #: build/forms.py:215 build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:59 order/models.py:445
+#: build/templates/build/detail.html:59 order/models.py:455
 #: order/templates/order/receive_parts.html:24
 #: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
 #: templates/js/barcode.js:119 templates/js/build.js:770
@@ -508,7 +509,7 @@ msgstr ""
 #: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55
 #: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183
 #: templates/InvenTree/search.html:185
-#: templates/InvenTree/settings/tabs.html:31 users/models.py:41
+#: templates/InvenTree/settings/tabs.html:31 users/models.py:43
 msgid "Build Orders"
 msgstr ""
 
@@ -516,8 +517,8 @@ msgstr ""
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:127 order/models.py:99 order/models.py:595
-#: order/templates/order/purchase_order_detail.html:195
+#: build/models.py:127 order/models.py:99 order/models.py:605
+#: order/templates/order/purchase_order_detail.html:170
 #: order/templates/order/sales_order_detail.html:219 part/models.py:2187
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197
@@ -540,10 +541,10 @@ msgstr ""
 
 #: build/models.py:152 build/templates/build/auto_allocate.html:16
 #: build/templates/build/build_base.html:118
-#: build/templates/build/detail.html:26 company/models.py:669
-#: order/models.py:637 order/models.py:669
+#: build/templates/build/detail.html:26 company/models.py:688
+#: order/models.py:647 order/models.py:679
 #: order/templates/order/order_wizard/select_parts.html:30
-#: order/templates/order/purchase_order_detail.html:156
+#: order/templates/order/purchase_order_detail.html:131
 #: order/templates/order/receive_parts.html:19
 #: order/templates/order/sales_order_detail.html:207 part/models.py:321
 #: part/models.py:1876 part/models.py:1888 part/models.py:1906
@@ -628,7 +629,7 @@ msgstr ""
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:223 order/models.py:451
+#: build/models.py:223 order/models.py:461
 msgid "Target completion date"
 msgstr ""
 
@@ -678,9 +679,9 @@ msgstr ""
 #: company/models.py:135 company/models.py:501
 #: company/templates/company/navbar.html:70
 #: company/templates/company/navbar.html:73 order/models.py:123
-#: order/models.py:597 order/templates/order/po_navbar.html:29
+#: order/models.py:607 order/templates/order/po_navbar.html:29
 #: order/templates/order/po_navbar.html:32
-#: order/templates/order/purchase_order_detail.html:234
+#: order/templates/order/purchase_order_detail.html:209
 #: order/templates/order/sales_order_detail.html:264
 #: order/templates/order/so_navbar.html:33
 #: order/templates/order/so_navbar.html:36 part/models.py:871
@@ -713,47 +714,47 @@ msgstr ""
 msgid "Completed build output"
 msgstr ""
 
-#: build/models.py:1118
+#: build/models.py:1132
 msgid "BuildItem must be unique for build, stock_item and install_into"
 msgstr ""
 
-#: build/models.py:1143
+#: build/models.py:1157
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1147
+#: build/models.py:1161
 #, python-brace-format
 msgid "Selected stock item not found in BOM for part '{p}'"
 msgstr ""
 
-#: build/models.py:1151
+#: build/models.py:1165
 #, python-brace-format
 msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
 msgstr ""
 
-#: build/models.py:1158 order/models.py:758
+#: build/models.py:1172 order/models.py:768
 msgid "StockItem is over-allocated"
 msgstr ""
 
-#: build/models.py:1162 order/models.py:761
+#: build/models.py:1176 order/models.py:771
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1166
+#: build/models.py:1180
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1206 stock/templates/stock/item_base.html:306
+#: build/models.py:1220 stock/templates/stock/item_base.html:306
 #: templates/InvenTree/search.html:183 templates/js/build.js:714
 #: templates/navbar.html:29
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1207
+#: build/models.py:1221
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1214 part/templates/part/allocation.html:18
+#: build/models.py:1228 part/templates/part/allocation.html:18
 #: part/templates/part/allocation.html:24
 #: part/templates/part/allocation.html:31
 #: part/templates/part/allocation.html:49
@@ -765,19 +766,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1215
+#: build/models.py:1229
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1228
+#: build/models.py:1242
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1236
+#: build/models.py:1250
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1237
+#: build/models.py:1251
 msgid "Destination stock item"
 msgstr ""
 
@@ -801,7 +802,7 @@ msgstr ""
 msgid "Unallocate stock"
 msgstr ""
 
-#: build/templates/build/allocate.html:26 build/views.py:308 build/views.py:794
+#: build/templates/build/allocate.html:26 build/views.py:319 build/views.py:805
 msgid "Unallocate Stock"
 msgstr ""
 
@@ -811,7 +812,7 @@ msgstr ""
 
 #: build/templates/build/allocate.html:30
 #: company/templates/company/detail_manufacturer_part.html:33
-#: company/templates/company/detail_supplier_part.html:32 order/views.py:794
+#: company/templates/company/detail_supplier_part.html:32 order/views.py:795
 #: part/templates/part/category.html:127
 msgid "Order Parts"
 msgstr ""
@@ -954,7 +955,7 @@ msgid "Progress"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:84 order/models.py:667
+#: build/templates/build/detail.html:84 order/models.py:677
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:33
 #: order/templates/order/sales_order_ship.html:25
@@ -1139,7 +1140,7 @@ msgstr ""
 msgid "Alter the quantity of stock allocated to the build output"
 msgstr ""
 
-#: build/templates/build/index.html:28 build/views.py:667
+#: build/templates/build/index.html:28 build/views.py:678
 msgid "New Build Order"
 msgstr ""
 
@@ -1226,141 +1227,145 @@ msgstr ""
 msgid "Create Build Output"
 msgstr ""
 
-#: build/views.py:173 stock/models.py:969 stock/views.py:1789
+#: build/views.py:168
+msgid "Maximum output quantity is "
+msgstr ""
+
+#: build/views.py:184 stock/models.py:969 stock/views.py:1789
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: build/views.py:182
+#: build/views.py:193
 msgid "Serial numbers required for trackable build output"
 msgstr ""
 
-#: build/views.py:248
+#: build/views.py:259
 msgid "Delete Build Output"
 msgstr ""
 
-#: build/views.py:269 build/views.py:359
+#: build/views.py:280 build/views.py:370
 msgid "Confirm unallocation of build stock"
 msgstr ""
 
-#: build/views.py:270 build/views.py:360 stock/views.py:425
+#: build/views.py:281 build/views.py:371 stock/views.py:425
 msgid "Check the confirmation box"
 msgstr ""
 
-#: build/views.py:282
+#: build/views.py:293
 msgid "Build output does not match build"
 msgstr ""
 
-#: build/views.py:284 build/views.py:485
+#: build/views.py:295 build/views.py:496
 msgid "Build output must be specified"
 msgstr ""
 
-#: build/views.py:296
+#: build/views.py:307
 msgid "Build output deleted"
 msgstr ""
 
-#: build/views.py:394
+#: build/views.py:405
 msgid "Complete Build Order"
 msgstr ""
 
-#: build/views.py:400
+#: build/views.py:411
 msgid "Build order cannot be completed - incomplete outputs remain"
 msgstr ""
 
-#: build/views.py:411
+#: build/views.py:422
 msgid "Completed build order"
 msgstr ""
 
-#: build/views.py:427
+#: build/views.py:438
 msgid "Complete Build Output"
 msgstr ""
 
-#: build/views.py:469
+#: build/views.py:480
 msgid "Invalid stock status value selected"
 msgstr ""
 
-#: build/views.py:476
+#: build/views.py:487
 msgid "Quantity to complete cannot exceed build output quantity"
 msgstr ""
 
-#: build/views.py:482
+#: build/views.py:493
 msgid "Confirm completion of incomplete build"
 msgstr ""
 
-#: build/views.py:581
+#: build/views.py:592
 msgid "Build output completed"
 msgstr ""
 
-#: build/views.py:721
+#: build/views.py:732
 msgid "Created new build"
 msgstr ""
 
-#: build/views.py:742
+#: build/views.py:753
 msgid "Edit Build Order Details"
 msgstr ""
 
-#: build/views.py:775
+#: build/views.py:786
 msgid "Edited build"
 msgstr ""
 
-#: build/views.py:784
+#: build/views.py:795
 msgid "Delete Build Order"
 msgstr ""
 
-#: build/views.py:799
+#: build/views.py:810
 msgid "Removed parts from build allocation"
 msgstr ""
 
-#: build/views.py:811
+#: build/views.py:822
 msgid "Allocate stock to build output"
 msgstr ""
 
-#: build/views.py:854
+#: build/views.py:865
 msgid "Item must be currently in stock"
 msgstr ""
 
-#: build/views.py:860
+#: build/views.py:871
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/views.py:861 templates/js/bom.js:230 templates/js/build.js:575
+#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:575
 #: templates/js/build.js:838 templates/js/build.js:1021
 msgid "Available"
 msgstr ""
 
-#: build/views.py:863
+#: build/views.py:874
 msgid "Stock item must be selected"
 msgstr ""
 
-#: build/views.py:1026
+#: build/views.py:1037
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: build/views.py:1030
+#: build/views.py:1041
 msgid "Updated Build Item"
 msgstr ""
 
-#: build/views.py:1059
+#: build/views.py:1070
 msgid "Add Build Order Attachment"
 msgstr ""
 
-#: build/views.py:1072 order/views.py:110 order/views.py:162 part/views.py:172
+#: build/views.py:1083 order/views.py:110 order/views.py:162 part/views.py:172
 #: stock/views.py:277
 msgid "Added attachment"
 msgstr ""
 
-#: build/views.py:1108 order/views.py:189 order/views.py:210
+#: build/views.py:1119 order/views.py:189 order/views.py:210
 msgid "Edit Attachment"
 msgstr ""
 
-#: build/views.py:1118 order/views.py:193 order/views.py:214
+#: build/views.py:1129 order/views.py:193 order/views.py:214
 msgid "Attachment updated"
 msgstr ""
 
-#: build/views.py:1128 order/views.py:229 order/views.py:243
+#: build/views.py:1139 order/views.py:229 order/views.py:243
 msgid "Delete Attachment"
 msgstr ""
 
-#: build/views.py:1133 order/views.py:235 order/views.py:249 stock/views.py:333
+#: build/views.py:1144 order/views.py:235 order/views.py:249 stock/views.py:333
 msgid "Deleted attachment"
 msgstr ""
 
@@ -1766,7 +1771,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_detail.html:26
 #: company/templates/company/supplier_part_base.html:101
 #: company/templates/company/supplier_part_detail.html:35
-#: order/templates/order/purchase_order_detail.html:183 part/bom.py:171
+#: order/templates/order/purchase_order_detail.html:158 part/bom.py:171
 #: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307
 msgid "MPN"
 msgstr ""
@@ -1865,7 +1870,7 @@ msgstr ""
 msgid "Base Part"
 msgstr ""
 
-#: company/models.py:312 company/models.py:463 order/views.py:1372
+#: company/models.py:312 company/models.py:463 order/views.py:1384
 msgid "Select part"
 msgstr ""
 
@@ -1905,7 +1910,7 @@ msgstr ""
 
 #: company/models.py:475 company/templates/company/supplier_part_base.html:88
 #: company/templates/company/supplier_part_detail.html:26
-#: order/templates/order/purchase_order_detail.html:174 part/bom.py:176
+#: order/templates/order/purchase_order_detail.html:149 part/bom.py:176
 #: part/bom.py:287
 msgid "SKU"
 msgstr ""
@@ -2017,7 +2022,8 @@ msgstr ""
 
 #: company/templates/company/delete.html:12
 #, python-format
-msgid "There are %(count)s parts sourced from this company.<br>\n"
+msgid ""
+"There are %(count)s parts sourced from this company.<br>\n"
 "If this supplier is deleted, these supplier part entries will also be deleted."
 msgstr ""
 
@@ -2033,7 +2039,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/detail.html:67 order/models.py:440
+#: company/templates/company/detail.html:67 order/models.py:450
 #: order/templates/order/sales_order_base.html:92 stock/models.py:415
 #: stock/models.py:416 stock/templates/stock/item_base.html:251
 #: templates/js/company.js:40 templates/js/order.js:267
@@ -2122,13 +2128,13 @@ msgstr ""
 
 #: company/templates/company/detail_supplier_part.html:21
 #: order/templates/order/order_wizard/select_parts.html:42
-#: order/templates/order/purchase_order_detail.html:75
+#: order/templates/order/purchase_order_detail.html:50
 msgid "Create new supplier part"
 msgstr ""
 
 #: company/templates/company/detail_supplier_part.html:22
 #: company/templates/company/manufacturer_part_suppliers.html:17
-#: order/templates/order/purchase_order_detail.html:74
+#: order/templates/order/purchase_order_detail.html:49
 #: part/templates/part/supplier.html:17 templates/js/stock.js:1163
 msgid "New Supplier Part"
 msgstr ""
@@ -2226,7 +2232,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_suppliers.html:22
 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44
 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22
-#: stock/views.py:1002 users/models.py:184
+#: stock/views.py:1002 users/models.py:187
 msgid "Delete"
 msgstr ""
 
@@ -2252,7 +2258,7 @@ msgstr ""
 #: stock/templates/stock/location_navbar.html:22
 #: stock/templates/stock/location_navbar.html:29
 #: templates/InvenTree/search.html:198 templates/js/stock.js:968
-#: templates/stats.html:72 templates/stats.html:81 users/models.py:40
+#: templates/stats.html:72 templates/stats.html:81 users/models.py:42
 msgid "Stock Items"
 msgstr ""
 
@@ -2266,7 +2272,7 @@ msgstr ""
 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228
 #: templates/InvenTree/search.html:345
 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:46
-#: users/models.py:43
+#: users/models.py:45
 msgid "Sales Orders"
 msgstr ""
 
@@ -2278,7 +2284,7 @@ msgstr ""
 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205
 #: templates/InvenTree/search.html:325
 #: templates/InvenTree/settings/tabs.html:34 templates/navbar.html:37
-#: users/models.py:42
+#: users/models.py:44
 msgid "Purchase Orders"
 msgstr ""
 
@@ -2357,7 +2363,7 @@ msgid "Pricing Information"
 msgstr ""
 
 #: company/templates/company/supplier_part_pricing.html:19 company/views.py:794
-#: part/templates/part/sale_prices.html:17 part/views.py:2624
+#: part/templates/part/sale_prices.html:17 part/views.py:2636
 msgid "Add Price Break"
 msgstr ""
 
@@ -2467,15 +2473,15 @@ msgstr ""
 msgid "Delete Supplier Part"
 msgstr ""
 
-#: company/views.py:799 part/views.py:2628
+#: company/views.py:799 part/views.py:2640
 msgid "Added new price break"
 msgstr ""
 
-#: company/views.py:855 part/views.py:2672
+#: company/views.py:855 part/views.py:2684
 msgid "Edit Price Break"
 msgstr ""
 
-#: company/views.py:870 part/views.py:2686
+#: company/views.py:870 part/views.py:2698
 msgid "Delete Price Break"
 msgstr ""
 
@@ -2565,7 +2571,7 @@ msgstr ""
 msgid "Enter sales order number"
 msgstr ""
 
-#: order/forms.py:145 order/models.py:452
+#: order/forms.py:145 order/models.py:462
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
@@ -2601,7 +2607,7 @@ msgstr ""
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:182 order/models.py:445
+#: order/models.py:182 order/models.py:455
 msgid "Purchase order status"
 msgstr ""
 
@@ -2642,8 +2648,8 @@ msgstr ""
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:243 order/models.py:342 part/views.py:1586
-#: stock/models.py:270 stock/models.py:953
+#: order/models.py:243 part/views.py:1586 stock/models.py:270
+#: stock/models.py:953
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -2651,120 +2657,128 @@ msgstr ""
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:337
+#: order/models.py:344
 msgid "Lines can only be received against an order marked as 'Placed'"
 msgstr ""
 
-#: order/models.py:359
+#: order/models.py:348
+msgid "Quantity must be an integer"
+msgstr ""
+
+#: order/models.py:350
+msgid "Quantity must be a positive number"
+msgstr ""
+
+#: order/models.py:369
 msgid "Received items"
 msgstr ""
 
-#: order/models.py:441
+#: order/models.py:451
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:455 templates/js/order.js:303
+#: order/models.py:465 templates/js/order.js:303
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:462
+#: order/models.py:472
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:506
+#: order/models.py:516
 msgid "SalesOrder cannot be shipped as it is not currently pending"
 msgstr ""
 
-#: order/models.py:593
+#: order/models.py:603
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:595
+#: order/models.py:605
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:597
+#: order/models.py:607
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:623 order/models.py:667
+#: order/models.py:633 order/models.py:677
 #: part/templates/part/allocation.html:17
 #: part/templates/part/allocation.html:45
 msgid "Order"
 msgstr ""
 
-#: order/models.py:624 order/templates/order/order_base.html:9
+#: order/models.py:634 order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:24
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:313 templates/js/order.js:148
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:638
+#: order/models.py:648
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:641 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:214
+#: order/models.py:651 order/templates/order/order_base.html:131
+#: order/templates/order/purchase_order_detail.html:189
 #: order/templates/order/receive_parts.html:22
 #: order/templates/order/sales_order_base.html:131
 msgid "Received"
 msgstr ""
 
-#: order/models.py:641
+#: order/models.py:651
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:648 stock/models.py:508
+#: order/models.py:658 stock/models.py:508
 #: stock/templates/stock/item_base.html:320
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:649
+#: order/models.py:659
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:743 order/models.py:745
+#: order/models.py:753 order/models.py:755
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:749
+#: order/models.py:759
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:751
+#: order/models.py:761
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:754
+#: order/models.py:764
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:764
+#: order/models.py:774
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:769
+#: order/models.py:779
 msgid "Line"
 msgstr ""
 
-#: order/models.py:780
+#: order/models.py:790
 msgid "Item"
 msgstr ""
 
-#: order/models.py:781
+#: order/models.py:791
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:784
+#: order/models.py:794
 msgid "Enter stock allocation quantity"
 msgstr ""
 
@@ -2812,9 +2826,22 @@ msgstr ""
 msgid "Issued"
 msgstr ""
 
-#: order/templates/order/order_cancel.html:7
-#: order/templates/order/sales_order_cancel.html:9
-msgid "Cancelling this order means that the order will no longer be editable."
+#: order/templates/order/order_base.html:180
+#: order/templates/order/purchase_order_detail.html:100
+#: part/templates/part/category.html:185 part/templates/part/category.html:227
+#: stock/templates/stock/location.html:191 templates/js/stock.js:708
+#: templates/js/stock.js:1169
+msgid "New Location"
+msgstr ""
+
+#: order/templates/order/order_base.html:181
+#: order/templates/order/purchase_order_detail.html:101
+#: stock/templates/stock/location.html:42
+msgid "Create new stock location"
+msgstr ""
+
+#: order/templates/order/order_cancel.html:8
+msgid "Cancelling this order means that the order and line items will no longer be editable."
 msgstr ""
 
 #: order/templates/order/order_complete.html:7
@@ -2826,10 +2853,10 @@ msgid "This order has line items which have not been marked as received."
 msgstr ""
 
 #: order/templates/order/order_complete.html:11
-msgid "Marking this order as complete will remove these line items."
+msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: order/templates/order/order_issue.html:7
+#: order/templates/order/order_issue.html:8
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
@@ -2881,11 +2908,13 @@ msgid "Select Purchase Order"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_pos.html:45
-msgid "Create new purchase order for {{ supplier.name }}"
+#, python-format
+msgid "Create new purchase order for %(name)s"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_pos.html:68
-msgid "Select a purchase order for"
+#, python-format
+msgid "Select a purchase order for %(name)s"
 msgstr ""
 
 #: order/templates/order/po_attachments.html:12
@@ -2907,43 +2936,29 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py:1108
-#: order/views.py:1191
+#: order/templates/order/sales_order_detail.html:22 order/views.py:1120
+#: order/views.py:1203
 msgid "Add Line Item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:45
-#: order/templates/order/purchase_order_detail.html:125
-#: part/templates/part/category.html:185 part/templates/part/category.html:227
-#: stock/templates/stock/location.html:191 templates/js/stock.js:708
-#: templates/js/stock.js:1169
-msgid "New Location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:46
-#: order/templates/order/purchase_order_detail.html:126
-#: stock/templates/stock/location.html:42
-msgid "Create new stock location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:139
+#: order/templates/order/purchase_order_detail.html:114
 msgid "No line items found"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:205
+#: order/templates/order/purchase_order_detail.html:180
 msgid "Unit Price"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:246
+#: order/templates/order/purchase_order_detail.html:221
 #: order/templates/order/sales_order_detail.html:294
 msgid "Edit line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:247
+#: order/templates/order/purchase_order_detail.html:222
 msgid "Delete line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:252
+#: order/templates/order/purchase_order_detail.html:227
 msgid "Receive line item"
 msgstr ""
 
@@ -2966,7 +2981,7 @@ msgstr ""
 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114
 #: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:577
 #: templates/navbar.html:23 templates/stats.html:59 templates/stats.html:68
-#: users/models.py:38
+#: users/models.py:40
 msgid "Parts"
 msgstr ""
 
@@ -3019,6 +3034,10 @@ msgstr ""
 msgid "Warning"
 msgstr ""
 
+#: order/templates/order/sales_order_cancel.html:9
+msgid "Cancelling this order means that the order will no longer be editable."
+msgstr ""
+
 #: order/templates/order/sales_order_detail.html:13
 msgid "Sales Order Items"
 msgstr ""
@@ -3213,65 +3232,65 @@ msgstr ""
 msgid "No lines specified"
 msgstr ""
 
-#: order/views.py:1060
+#: order/views.py:1069
 #, python-brace-format
 msgid "Ordered {n} parts"
 msgstr ""
 
-#: order/views.py:1117
+#: order/views.py:1129
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/views.py:1123
+#: order/views.py:1135
 msgid "Supplier must match for Part and Order"
 msgstr ""
 
-#: order/views.py:1242 order/views.py:1260
+#: order/views.py:1254 order/views.py:1272
 msgid "Edit Line Item"
 msgstr ""
 
-#: order/views.py:1276 order/views.py:1288
+#: order/views.py:1288 order/views.py:1300
 msgid "Delete Line Item"
 msgstr ""
 
-#: order/views.py:1281 order/views.py:1293
+#: order/views.py:1293 order/views.py:1305
 msgid "Deleted line item"
 msgstr ""
 
-#: order/views.py:1306
+#: order/views.py:1318
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: order/views.py:1351
+#: order/views.py:1363
 #, python-brace-format
 msgid "Allocated {n} items"
 msgstr ""
 
-#: order/views.py:1367
+#: order/views.py:1379
 msgid "Select line item"
 msgstr ""
 
-#: order/views.py:1398
+#: order/views.py:1410
 msgid "No matching item for serial"
 msgstr ""
 
-#: order/views.py:1408
+#: order/views.py:1420
 msgid "is not in stock"
 msgstr ""
 
-#: order/views.py:1416
+#: order/views.py:1428
 msgid "already allocated to an order"
 msgstr ""
 
-#: order/views.py:1470
+#: order/views.py:1482
 msgid "Allocate Stock to Order"
 msgstr ""
 
-#: order/views.py:1544
+#: order/views.py:1556
 msgid "Edit Allocation Quantity"
 msgstr ""
 
-#: order/views.py:1559
+#: order/views.py:1571
 msgid "Remove allocation"
 msgstr ""
 
@@ -3457,7 +3476,7 @@ msgstr ""
 #: part/models.py:83 part/templates/part/category.html:23
 #: part/templates/part/category.html:94 part/templates/part/category.html:141
 #: templates/InvenTree/search.html:127 templates/stats.html:63
-#: users/models.py:37
+#: users/models.py:39
 msgid "Part Categories"
 msgstr ""
 
@@ -4004,7 +4023,7 @@ msgstr ""
 msgid "All parts"
 msgstr ""
 
-#: part/templates/part/category.html:29 part/views.py:2270
+#: part/templates/part/category.html:29 part/views.py:2282
 msgid "Create new part category"
 msgstr ""
 
@@ -4694,63 +4713,63 @@ msgstr ""
 msgid "Part Pricing"
 msgstr ""
 
-#: part/views.py:2069
+#: part/views.py:2081
 msgid "Create Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2079
+#: part/views.py:2091
 msgid "Edit Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2086
+#: part/views.py:2098
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2094
+#: part/views.py:2106
 msgid "Create Part Parameter"
 msgstr ""
 
-#: part/views.py:2144
+#: part/views.py:2156
 msgid "Edit Part Parameter"
 msgstr ""
 
-#: part/views.py:2158
+#: part/views.py:2170
 msgid "Delete Part Parameter"
 msgstr ""
 
-#: part/views.py:2218
+#: part/views.py:2230
 msgid "Edit Part Category"
 msgstr ""
 
-#: part/views.py:2256
+#: part/views.py:2268
 msgid "Delete Part Category"
 msgstr ""
 
-#: part/views.py:2262
+#: part/views.py:2274
 msgid "Part category was deleted"
 msgstr ""
 
-#: part/views.py:2314
+#: part/views.py:2326
 msgid "Create Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2415
+#: part/views.py:2427
 msgid "Edit Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2471
+#: part/views.py:2483
 msgid "Delete Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2490
+#: part/views.py:2502
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/views.py:2560
+#: part/views.py:2572
 msgid "Edit BOM item"
 msgstr ""
 
-#: part/views.py:2616
+#: part/views.py:2628
 msgid "Confim BOM item deletion"
 msgstr ""
 
@@ -5301,15 +5320,15 @@ msgid "Stock adjustment actions"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:164
-#: stock/templates/stock/location.html:65 templates/stock_table.html:56
+#: stock/templates/stock/location.html:65 templates/stock_table.html:57
 msgid "Count stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:167 templates/stock_table.html:54
+#: stock/templates/stock/item_base.html:167 templates/stock_table.html:55
 msgid "Add stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:170 templates/stock_table.html:55
+#: stock/templates/stock/item_base.html:170 templates/stock_table.html:56
 msgid "Remove stock"
 msgstr ""
 
@@ -5503,7 +5522,7 @@ msgid "Stock Details"
 msgstr ""
 
 #: stock/templates/stock/location.html:117 templates/InvenTree/search.html:279
-#: templates/stats.html:76 users/models.py:39
+#: templates/stats.html:76 users/models.py:41
 msgid "Stock Locations"
 msgstr ""
 
@@ -5689,7 +5708,7 @@ msgstr ""
 msgid "Add Stock Items"
 msgstr ""
 
-#: stock/views.py:1001 users/models.py:180
+#: stock/views.py:1001 users/models.py:183
 msgid "Add"
 msgstr ""
 
@@ -5867,6 +5886,31 @@ msgstr ""
 msgid "No stock location set"
 msgstr ""
 
+#: templates/InvenTree/settings/appearance.html:10
+msgid "Theme Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:17
+msgid "Color Themes"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:29
+#, python-format
+msgid ""
+"\n"
+"        The CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
+"        Please select another color theme :)\n"
+"    "
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:39
+msgid "Language"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:61
+msgid "Set Language"
+msgstr ""
+
 #: templates/InvenTree/settings/build.html:10
 msgid "Build Order Settings"
 msgstr ""
@@ -5950,7 +5994,7 @@ msgstr ""
 msgid "Stock Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:49
+#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:50
 msgid "Stock Options"
 msgstr ""
 
@@ -5964,7 +6008,7 @@ msgid "Account"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:9
-msgid "Theme"
+msgid "Appearance"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:13
@@ -5983,22 +6027,6 @@ msgstr ""
 msgid "Categories"
 msgstr ""
 
-#: templates/InvenTree/settings/theme.html:10
-msgid "Theme Settings"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:17
-msgid "Color Themes"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:29
-#, python-format
-msgid "\n"
-"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
-"\t\tPlease select another color theme :)\n"
-"\t"
-msgstr ""
-
 #: templates/InvenTree/settings/user.html:16
 msgid "User Information"
 msgstr ""
@@ -6061,13 +6089,23 @@ msgid "View Code on GitHub"
 msgstr ""
 
 #: templates/about.html:63
-msgid "Get the App"
+msgid "Credits"
 msgstr ""
 
 #: templates/about.html:68
+msgid "Mobile App"
+msgstr ""
+
+#: templates/about.html:73
 msgid "Submit Bug Report"
 msgstr ""
 
+#: templates/about.html:82 templates/js/modals.js:550
+#: templates/js/modals.js:809 templates/modals.html:28 templates/modals.html:52
+#: templates/modals.html:93
+msgid "Close"
+msgstr ""
+
 #: templates/attachment_table.html:6
 msgid "Add Attachment"
 msgstr ""
@@ -6263,7 +6301,7 @@ msgid "Quantity Per"
 msgstr ""
 
 #: templates/js/build.js:638 templates/js/build.js:1056
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order stock"
 msgstr ""
 
@@ -6396,11 +6434,6 @@ msgstr ""
 msgid "Submit"
 msgstr ""
 
-#: templates/js/modals.js:550 templates/js/modals.js:809
-#: templates/modals.html:28 templates/modals.html:52 templates/modals.html:93
-msgid "Close"
-msgstr ""
-
 #: templates/js/modals.js:760
 msgid "Invalid response from server"
 msgstr ""
@@ -6974,6 +7007,10 @@ msgstr ""
 msgid "Form errors exist"
 msgstr ""
 
+#: templates/navbar.html:13
+msgid "Toggle navigation"
+msgstr ""
+
 #: templates/navbar.html:33
 msgid "Buy"
 msgstr ""
@@ -6986,7 +7023,7 @@ msgstr ""
 msgid "Scan Barcode"
 msgstr ""
 
-#: templates/navbar.html:77 users/models.py:36
+#: templates/navbar.html:77 users/models.py:38
 msgid "Admin"
 msgstr ""
 
@@ -7118,43 +7155,43 @@ msgstr ""
 msgid "Print test reports"
 msgstr ""
 
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
 msgid "Add to selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:55
+#: templates/stock_table.html:56
 msgid "Remove from selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:56
+#: templates/stock_table.html:57
 msgid "Stocktake selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move stock"
 msgstr ""
 
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order selected items"
 msgstr ""
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change status"
 msgstr ""
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change stock status"
 msgstr ""
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete selected items"
 msgstr ""
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete Stock"
 msgstr ""
 
@@ -7190,35 +7227,34 @@ msgstr ""
 msgid "Important dates"
 msgstr ""
 
-#: users/models.py:167
+#: users/models.py:170
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:175
+#: users/models.py:178
 msgid "Group"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "View"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:180
+#: users/models.py:183
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Change"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:184
+#: users/models.py:187
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/it/LC_MESSAGES/django.mo b/InvenTree/locale/it/LC_MESSAGES/django.mo
index 71cbdf3e9d..900921d249 100644
Binary files a/InvenTree/locale/it/LC_MESSAGES/django.mo and b/InvenTree/locale/it/LC_MESSAGES/django.mo differ
diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po
index 978d9186a4..69191acc73 100644
--- a/InvenTree/locale/it/LC_MESSAGES/django.po
+++ b/InvenTree/locale/it/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-04-21 09:17+0000\n"
+"POT-Creation-Date: 2021-05-05 17:33+1000\n"
 "PO-Revision-Date: 2021-04-21 09:33\n"
 "Last-Translator: \n"
 "Language-Team: Italian\n"
@@ -67,35 +67,36 @@ msgstr ""
 msgid "Select Category"
 msgstr ""
 
-#: InvenTree/helpers.py:375 order/models.py:245 order/models.py:344
-#: stock/views.py:1763
-msgid "Invalid quantity provided"
-msgstr ""
-
-#: InvenTree/helpers.py:378
-msgid "Empty serial number string"
-msgstr ""
-
-#: InvenTree/helpers.py:399
+#: InvenTree/helpers.py:377
 #, python-brace-format
 msgid "Duplicate serial: {n}"
 msgstr ""
 
-#: InvenTree/helpers.py:403 InvenTree/helpers.py:406 InvenTree/helpers.py:409
+#: InvenTree/helpers.py:384 order/models.py:245 order/models.py:353
+#: stock/views.py:1763
+msgid "Invalid quantity provided"
+msgstr ""
+
+#: InvenTree/helpers.py:387
+msgid "Empty serial number string"
+msgstr ""
+
+#: InvenTree/helpers.py:409 InvenTree/helpers.py:412 InvenTree/helpers.py:415
+#: InvenTree/helpers.py:440
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:445
 #, python-brace-format
 msgid "Duplicate serial: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:422
+#: InvenTree/helpers.py:453
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:426
+#: InvenTree/helpers.py:457
 #, python-brace-format
 msgid "Number of unique serial number ({s}) must match quantity ({q})"
 msgstr ""
@@ -140,7 +141,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_base.html:72
 #: company/templates/company/supplier_part_base.html:71
 #: company/templates/company/supplier_part_detail.html:31 label/models.py:108
-#: order/models.py:101 order/templates/order/purchase_order_detail.html:168
+#: order/models.py:101 order/templates/order/purchase_order_detail.html:143
 #: part/models.py:710 part/templates/part/detail.html:54
 #: part/templates/part/set_category.html:14 report/models.py:192
 #: report/models.py:505 report/models.py:544
@@ -165,23 +166,23 @@ msgstr ""
 msgid "parent"
 msgstr ""
 
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:491
 msgid "English"
 msgstr ""
 
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:492
 msgid "French"
 msgstr ""
 
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:493
 msgid "German"
 msgstr ""
 
-#: InvenTree/settings.py:496
+#: InvenTree/settings.py:494
 msgid "Polish"
 msgstr ""
 
-#: InvenTree/settings.py:497
+#: InvenTree/settings.py:495
 msgid "Turkish"
 msgstr ""
 
@@ -375,16 +376,16 @@ msgstr ""
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1227
+#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1241
 #: build/templates/build/allocation_card.html:23
 #: build/templates/build/auto_allocate.html:17
 #: build/templates/build/build_base.html:123
 #: build/templates/build/detail.html:31 common/models.py:703
 #: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77
 #: order/forms.py:188 order/forms.py:205 order/forms.py:239 order/forms.py:261
-#: order/forms.py:278 order/models.py:593 order/models.py:784
+#: order/forms.py:278 order/models.py:603 order/models.py:794
 #: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:200
+#: order/templates/order/purchase_order_detail.html:175
 #: order/templates/order/sales_order_detail.html:70
 #: order/templates/order/sales_order_detail.html:77
 #: order/templates/order/sales_order_detail.html:159
@@ -458,7 +459,7 @@ msgid "Location of completed parts"
 msgstr ""
 
 #: build/forms.py:215 build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:59 order/models.py:445
+#: build/templates/build/detail.html:59 order/models.py:455
 #: order/templates/order/receive_parts.html:24
 #: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
 #: templates/js/barcode.js:119 templates/js/build.js:770
@@ -508,7 +509,7 @@ msgstr ""
 #: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55
 #: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183
 #: templates/InvenTree/search.html:185
-#: templates/InvenTree/settings/tabs.html:31 users/models.py:41
+#: templates/InvenTree/settings/tabs.html:31 users/models.py:43
 msgid "Build Orders"
 msgstr ""
 
@@ -516,8 +517,8 @@ msgstr ""
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:127 order/models.py:99 order/models.py:595
-#: order/templates/order/purchase_order_detail.html:195
+#: build/models.py:127 order/models.py:99 order/models.py:605
+#: order/templates/order/purchase_order_detail.html:170
 #: order/templates/order/sales_order_detail.html:219 part/models.py:2187
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197
@@ -540,10 +541,10 @@ msgstr ""
 
 #: build/models.py:152 build/templates/build/auto_allocate.html:16
 #: build/templates/build/build_base.html:118
-#: build/templates/build/detail.html:26 company/models.py:669
-#: order/models.py:637 order/models.py:669
+#: build/templates/build/detail.html:26 company/models.py:688
+#: order/models.py:647 order/models.py:679
 #: order/templates/order/order_wizard/select_parts.html:30
-#: order/templates/order/purchase_order_detail.html:156
+#: order/templates/order/purchase_order_detail.html:131
 #: order/templates/order/receive_parts.html:19
 #: order/templates/order/sales_order_detail.html:207 part/models.py:321
 #: part/models.py:1876 part/models.py:1888 part/models.py:1906
@@ -628,7 +629,7 @@ msgstr ""
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:223 order/models.py:451
+#: build/models.py:223 order/models.py:461
 msgid "Target completion date"
 msgstr ""
 
@@ -678,9 +679,9 @@ msgstr ""
 #: company/models.py:135 company/models.py:501
 #: company/templates/company/navbar.html:70
 #: company/templates/company/navbar.html:73 order/models.py:123
-#: order/models.py:597 order/templates/order/po_navbar.html:29
+#: order/models.py:607 order/templates/order/po_navbar.html:29
 #: order/templates/order/po_navbar.html:32
-#: order/templates/order/purchase_order_detail.html:234
+#: order/templates/order/purchase_order_detail.html:209
 #: order/templates/order/sales_order_detail.html:264
 #: order/templates/order/so_navbar.html:33
 #: order/templates/order/so_navbar.html:36 part/models.py:871
@@ -713,47 +714,47 @@ msgstr ""
 msgid "Completed build output"
 msgstr ""
 
-#: build/models.py:1118
+#: build/models.py:1132
 msgid "BuildItem must be unique for build, stock_item and install_into"
 msgstr ""
 
-#: build/models.py:1143
+#: build/models.py:1157
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1147
+#: build/models.py:1161
 #, python-brace-format
 msgid "Selected stock item not found in BOM for part '{p}'"
 msgstr ""
 
-#: build/models.py:1151
+#: build/models.py:1165
 #, python-brace-format
 msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
 msgstr ""
 
-#: build/models.py:1158 order/models.py:758
+#: build/models.py:1172 order/models.py:768
 msgid "StockItem is over-allocated"
 msgstr ""
 
-#: build/models.py:1162 order/models.py:761
+#: build/models.py:1176 order/models.py:771
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1166
+#: build/models.py:1180
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1206 stock/templates/stock/item_base.html:306
+#: build/models.py:1220 stock/templates/stock/item_base.html:306
 #: templates/InvenTree/search.html:183 templates/js/build.js:714
 #: templates/navbar.html:29
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1207
+#: build/models.py:1221
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1214 part/templates/part/allocation.html:18
+#: build/models.py:1228 part/templates/part/allocation.html:18
 #: part/templates/part/allocation.html:24
 #: part/templates/part/allocation.html:31
 #: part/templates/part/allocation.html:49
@@ -765,19 +766,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1215
+#: build/models.py:1229
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1228
+#: build/models.py:1242
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1236
+#: build/models.py:1250
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1237
+#: build/models.py:1251
 msgid "Destination stock item"
 msgstr ""
 
@@ -801,7 +802,7 @@ msgstr ""
 msgid "Unallocate stock"
 msgstr ""
 
-#: build/templates/build/allocate.html:26 build/views.py:308 build/views.py:794
+#: build/templates/build/allocate.html:26 build/views.py:319 build/views.py:805
 msgid "Unallocate Stock"
 msgstr ""
 
@@ -811,7 +812,7 @@ msgstr ""
 
 #: build/templates/build/allocate.html:30
 #: company/templates/company/detail_manufacturer_part.html:33
-#: company/templates/company/detail_supplier_part.html:32 order/views.py:794
+#: company/templates/company/detail_supplier_part.html:32 order/views.py:795
 #: part/templates/part/category.html:127
 msgid "Order Parts"
 msgstr ""
@@ -954,7 +955,7 @@ msgid "Progress"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:84 order/models.py:667
+#: build/templates/build/detail.html:84 order/models.py:677
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:33
 #: order/templates/order/sales_order_ship.html:25
@@ -1139,7 +1140,7 @@ msgstr ""
 msgid "Alter the quantity of stock allocated to the build output"
 msgstr ""
 
-#: build/templates/build/index.html:28 build/views.py:667
+#: build/templates/build/index.html:28 build/views.py:678
 msgid "New Build Order"
 msgstr ""
 
@@ -1226,141 +1227,145 @@ msgstr ""
 msgid "Create Build Output"
 msgstr ""
 
-#: build/views.py:173 stock/models.py:969 stock/views.py:1789
+#: build/views.py:168
+msgid "Maximum output quantity is "
+msgstr ""
+
+#: build/views.py:184 stock/models.py:969 stock/views.py:1789
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: build/views.py:182
+#: build/views.py:193
 msgid "Serial numbers required for trackable build output"
 msgstr ""
 
-#: build/views.py:248
+#: build/views.py:259
 msgid "Delete Build Output"
 msgstr ""
 
-#: build/views.py:269 build/views.py:359
+#: build/views.py:280 build/views.py:370
 msgid "Confirm unallocation of build stock"
 msgstr ""
 
-#: build/views.py:270 build/views.py:360 stock/views.py:425
+#: build/views.py:281 build/views.py:371 stock/views.py:425
 msgid "Check the confirmation box"
 msgstr ""
 
-#: build/views.py:282
+#: build/views.py:293
 msgid "Build output does not match build"
 msgstr ""
 
-#: build/views.py:284 build/views.py:485
+#: build/views.py:295 build/views.py:496
 msgid "Build output must be specified"
 msgstr ""
 
-#: build/views.py:296
+#: build/views.py:307
 msgid "Build output deleted"
 msgstr ""
 
-#: build/views.py:394
+#: build/views.py:405
 msgid "Complete Build Order"
 msgstr ""
 
-#: build/views.py:400
+#: build/views.py:411
 msgid "Build order cannot be completed - incomplete outputs remain"
 msgstr ""
 
-#: build/views.py:411
+#: build/views.py:422
 msgid "Completed build order"
 msgstr ""
 
-#: build/views.py:427
+#: build/views.py:438
 msgid "Complete Build Output"
 msgstr ""
 
-#: build/views.py:469
+#: build/views.py:480
 msgid "Invalid stock status value selected"
 msgstr ""
 
-#: build/views.py:476
+#: build/views.py:487
 msgid "Quantity to complete cannot exceed build output quantity"
 msgstr ""
 
-#: build/views.py:482
+#: build/views.py:493
 msgid "Confirm completion of incomplete build"
 msgstr ""
 
-#: build/views.py:581
+#: build/views.py:592
 msgid "Build output completed"
 msgstr ""
 
-#: build/views.py:721
+#: build/views.py:732
 msgid "Created new build"
 msgstr ""
 
-#: build/views.py:742
+#: build/views.py:753
 msgid "Edit Build Order Details"
 msgstr ""
 
-#: build/views.py:775
+#: build/views.py:786
 msgid "Edited build"
 msgstr ""
 
-#: build/views.py:784
+#: build/views.py:795
 msgid "Delete Build Order"
 msgstr ""
 
-#: build/views.py:799
+#: build/views.py:810
 msgid "Removed parts from build allocation"
 msgstr ""
 
-#: build/views.py:811
+#: build/views.py:822
 msgid "Allocate stock to build output"
 msgstr ""
 
-#: build/views.py:854
+#: build/views.py:865
 msgid "Item must be currently in stock"
 msgstr ""
 
-#: build/views.py:860
+#: build/views.py:871
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/views.py:861 templates/js/bom.js:230 templates/js/build.js:575
+#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:575
 #: templates/js/build.js:838 templates/js/build.js:1021
 msgid "Available"
 msgstr ""
 
-#: build/views.py:863
+#: build/views.py:874
 msgid "Stock item must be selected"
 msgstr ""
 
-#: build/views.py:1026
+#: build/views.py:1037
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: build/views.py:1030
+#: build/views.py:1041
 msgid "Updated Build Item"
 msgstr ""
 
-#: build/views.py:1059
+#: build/views.py:1070
 msgid "Add Build Order Attachment"
 msgstr ""
 
-#: build/views.py:1072 order/views.py:110 order/views.py:162 part/views.py:172
+#: build/views.py:1083 order/views.py:110 order/views.py:162 part/views.py:172
 #: stock/views.py:277
 msgid "Added attachment"
 msgstr ""
 
-#: build/views.py:1108 order/views.py:189 order/views.py:210
+#: build/views.py:1119 order/views.py:189 order/views.py:210
 msgid "Edit Attachment"
 msgstr ""
 
-#: build/views.py:1118 order/views.py:193 order/views.py:214
+#: build/views.py:1129 order/views.py:193 order/views.py:214
 msgid "Attachment updated"
 msgstr ""
 
-#: build/views.py:1128 order/views.py:229 order/views.py:243
+#: build/views.py:1139 order/views.py:229 order/views.py:243
 msgid "Delete Attachment"
 msgstr ""
 
-#: build/views.py:1133 order/views.py:235 order/views.py:249 stock/views.py:333
+#: build/views.py:1144 order/views.py:235 order/views.py:249 stock/views.py:333
 msgid "Deleted attachment"
 msgstr ""
 
@@ -1766,7 +1771,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_detail.html:26
 #: company/templates/company/supplier_part_base.html:101
 #: company/templates/company/supplier_part_detail.html:35
-#: order/templates/order/purchase_order_detail.html:183 part/bom.py:171
+#: order/templates/order/purchase_order_detail.html:158 part/bom.py:171
 #: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307
 msgid "MPN"
 msgstr ""
@@ -1865,7 +1870,7 @@ msgstr ""
 msgid "Base Part"
 msgstr ""
 
-#: company/models.py:312 company/models.py:463 order/views.py:1372
+#: company/models.py:312 company/models.py:463 order/views.py:1384
 msgid "Select part"
 msgstr ""
 
@@ -1905,7 +1910,7 @@ msgstr ""
 
 #: company/models.py:475 company/templates/company/supplier_part_base.html:88
 #: company/templates/company/supplier_part_detail.html:26
-#: order/templates/order/purchase_order_detail.html:174 part/bom.py:176
+#: order/templates/order/purchase_order_detail.html:149 part/bom.py:176
 #: part/bom.py:287
 msgid "SKU"
 msgstr ""
@@ -2017,7 +2022,8 @@ msgstr ""
 
 #: company/templates/company/delete.html:12
 #, python-format
-msgid "There are %(count)s parts sourced from this company.<br>\n"
+msgid ""
+"There are %(count)s parts sourced from this company.<br>\n"
 "If this supplier is deleted, these supplier part entries will also be deleted."
 msgstr ""
 
@@ -2033,7 +2039,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/detail.html:67 order/models.py:440
+#: company/templates/company/detail.html:67 order/models.py:450
 #: order/templates/order/sales_order_base.html:92 stock/models.py:415
 #: stock/models.py:416 stock/templates/stock/item_base.html:251
 #: templates/js/company.js:40 templates/js/order.js:267
@@ -2122,13 +2128,13 @@ msgstr ""
 
 #: company/templates/company/detail_supplier_part.html:21
 #: order/templates/order/order_wizard/select_parts.html:42
-#: order/templates/order/purchase_order_detail.html:75
+#: order/templates/order/purchase_order_detail.html:50
 msgid "Create new supplier part"
 msgstr ""
 
 #: company/templates/company/detail_supplier_part.html:22
 #: company/templates/company/manufacturer_part_suppliers.html:17
-#: order/templates/order/purchase_order_detail.html:74
+#: order/templates/order/purchase_order_detail.html:49
 #: part/templates/part/supplier.html:17 templates/js/stock.js:1163
 msgid "New Supplier Part"
 msgstr ""
@@ -2226,7 +2232,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_suppliers.html:22
 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44
 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22
-#: stock/views.py:1002 users/models.py:184
+#: stock/views.py:1002 users/models.py:187
 msgid "Delete"
 msgstr ""
 
@@ -2252,7 +2258,7 @@ msgstr ""
 #: stock/templates/stock/location_navbar.html:22
 #: stock/templates/stock/location_navbar.html:29
 #: templates/InvenTree/search.html:198 templates/js/stock.js:968
-#: templates/stats.html:72 templates/stats.html:81 users/models.py:40
+#: templates/stats.html:72 templates/stats.html:81 users/models.py:42
 msgid "Stock Items"
 msgstr ""
 
@@ -2266,7 +2272,7 @@ msgstr ""
 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228
 #: templates/InvenTree/search.html:345
 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:46
-#: users/models.py:43
+#: users/models.py:45
 msgid "Sales Orders"
 msgstr ""
 
@@ -2278,7 +2284,7 @@ msgstr ""
 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205
 #: templates/InvenTree/search.html:325
 #: templates/InvenTree/settings/tabs.html:34 templates/navbar.html:37
-#: users/models.py:42
+#: users/models.py:44
 msgid "Purchase Orders"
 msgstr ""
 
@@ -2357,7 +2363,7 @@ msgid "Pricing Information"
 msgstr ""
 
 #: company/templates/company/supplier_part_pricing.html:19 company/views.py:794
-#: part/templates/part/sale_prices.html:17 part/views.py:2624
+#: part/templates/part/sale_prices.html:17 part/views.py:2636
 msgid "Add Price Break"
 msgstr ""
 
@@ -2467,15 +2473,15 @@ msgstr ""
 msgid "Delete Supplier Part"
 msgstr ""
 
-#: company/views.py:799 part/views.py:2628
+#: company/views.py:799 part/views.py:2640
 msgid "Added new price break"
 msgstr ""
 
-#: company/views.py:855 part/views.py:2672
+#: company/views.py:855 part/views.py:2684
 msgid "Edit Price Break"
 msgstr ""
 
-#: company/views.py:870 part/views.py:2686
+#: company/views.py:870 part/views.py:2698
 msgid "Delete Price Break"
 msgstr ""
 
@@ -2565,7 +2571,7 @@ msgstr ""
 msgid "Enter sales order number"
 msgstr ""
 
-#: order/forms.py:145 order/models.py:452
+#: order/forms.py:145 order/models.py:462
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
@@ -2601,7 +2607,7 @@ msgstr ""
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:182 order/models.py:445
+#: order/models.py:182 order/models.py:455
 msgid "Purchase order status"
 msgstr ""
 
@@ -2642,8 +2648,8 @@ msgstr ""
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:243 order/models.py:342 part/views.py:1586
-#: stock/models.py:270 stock/models.py:953
+#: order/models.py:243 part/views.py:1586 stock/models.py:270
+#: stock/models.py:953
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -2651,120 +2657,128 @@ msgstr ""
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:337
+#: order/models.py:344
 msgid "Lines can only be received against an order marked as 'Placed'"
 msgstr ""
 
-#: order/models.py:359
+#: order/models.py:348
+msgid "Quantity must be an integer"
+msgstr ""
+
+#: order/models.py:350
+msgid "Quantity must be a positive number"
+msgstr ""
+
+#: order/models.py:369
 msgid "Received items"
 msgstr ""
 
-#: order/models.py:441
+#: order/models.py:451
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:455 templates/js/order.js:303
+#: order/models.py:465 templates/js/order.js:303
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:462
+#: order/models.py:472
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:506
+#: order/models.py:516
 msgid "SalesOrder cannot be shipped as it is not currently pending"
 msgstr ""
 
-#: order/models.py:593
+#: order/models.py:603
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:595
+#: order/models.py:605
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:597
+#: order/models.py:607
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:623 order/models.py:667
+#: order/models.py:633 order/models.py:677
 #: part/templates/part/allocation.html:17
 #: part/templates/part/allocation.html:45
 msgid "Order"
 msgstr ""
 
-#: order/models.py:624 order/templates/order/order_base.html:9
+#: order/models.py:634 order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:24
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:313 templates/js/order.js:148
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:638
+#: order/models.py:648
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:641 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:214
+#: order/models.py:651 order/templates/order/order_base.html:131
+#: order/templates/order/purchase_order_detail.html:189
 #: order/templates/order/receive_parts.html:22
 #: order/templates/order/sales_order_base.html:131
 msgid "Received"
 msgstr ""
 
-#: order/models.py:641
+#: order/models.py:651
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:648 stock/models.py:508
+#: order/models.py:658 stock/models.py:508
 #: stock/templates/stock/item_base.html:320
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:649
+#: order/models.py:659
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:743 order/models.py:745
+#: order/models.py:753 order/models.py:755
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:749
+#: order/models.py:759
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:751
+#: order/models.py:761
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:754
+#: order/models.py:764
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:764
+#: order/models.py:774
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:769
+#: order/models.py:779
 msgid "Line"
 msgstr ""
 
-#: order/models.py:780
+#: order/models.py:790
 msgid "Item"
 msgstr ""
 
-#: order/models.py:781
+#: order/models.py:791
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:784
+#: order/models.py:794
 msgid "Enter stock allocation quantity"
 msgstr ""
 
@@ -2812,9 +2826,22 @@ msgstr ""
 msgid "Issued"
 msgstr ""
 
-#: order/templates/order/order_cancel.html:7
-#: order/templates/order/sales_order_cancel.html:9
-msgid "Cancelling this order means that the order will no longer be editable."
+#: order/templates/order/order_base.html:180
+#: order/templates/order/purchase_order_detail.html:100
+#: part/templates/part/category.html:185 part/templates/part/category.html:227
+#: stock/templates/stock/location.html:191 templates/js/stock.js:708
+#: templates/js/stock.js:1169
+msgid "New Location"
+msgstr ""
+
+#: order/templates/order/order_base.html:181
+#: order/templates/order/purchase_order_detail.html:101
+#: stock/templates/stock/location.html:42
+msgid "Create new stock location"
+msgstr ""
+
+#: order/templates/order/order_cancel.html:8
+msgid "Cancelling this order means that the order and line items will no longer be editable."
 msgstr ""
 
 #: order/templates/order/order_complete.html:7
@@ -2826,10 +2853,10 @@ msgid "This order has line items which have not been marked as received."
 msgstr ""
 
 #: order/templates/order/order_complete.html:11
-msgid "Marking this order as complete will remove these line items."
+msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: order/templates/order/order_issue.html:7
+#: order/templates/order/order_issue.html:8
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
@@ -2881,11 +2908,13 @@ msgid "Select Purchase Order"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_pos.html:45
-msgid "Create new purchase order for {{ supplier.name }}"
+#, python-format
+msgid "Create new purchase order for %(name)s"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_pos.html:68
-msgid "Select a purchase order for"
+#, python-format
+msgid "Select a purchase order for %(name)s"
 msgstr ""
 
 #: order/templates/order/po_attachments.html:12
@@ -2907,43 +2936,29 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py:1108
-#: order/views.py:1191
+#: order/templates/order/sales_order_detail.html:22 order/views.py:1120
+#: order/views.py:1203
 msgid "Add Line Item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:45
-#: order/templates/order/purchase_order_detail.html:125
-#: part/templates/part/category.html:185 part/templates/part/category.html:227
-#: stock/templates/stock/location.html:191 templates/js/stock.js:708
-#: templates/js/stock.js:1169
-msgid "New Location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:46
-#: order/templates/order/purchase_order_detail.html:126
-#: stock/templates/stock/location.html:42
-msgid "Create new stock location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:139
+#: order/templates/order/purchase_order_detail.html:114
 msgid "No line items found"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:205
+#: order/templates/order/purchase_order_detail.html:180
 msgid "Unit Price"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:246
+#: order/templates/order/purchase_order_detail.html:221
 #: order/templates/order/sales_order_detail.html:294
 msgid "Edit line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:247
+#: order/templates/order/purchase_order_detail.html:222
 msgid "Delete line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:252
+#: order/templates/order/purchase_order_detail.html:227
 msgid "Receive line item"
 msgstr ""
 
@@ -2966,7 +2981,7 @@ msgstr ""
 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114
 #: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:577
 #: templates/navbar.html:23 templates/stats.html:59 templates/stats.html:68
-#: users/models.py:38
+#: users/models.py:40
 msgid "Parts"
 msgstr ""
 
@@ -3019,6 +3034,10 @@ msgstr ""
 msgid "Warning"
 msgstr ""
 
+#: order/templates/order/sales_order_cancel.html:9
+msgid "Cancelling this order means that the order will no longer be editable."
+msgstr ""
+
 #: order/templates/order/sales_order_detail.html:13
 msgid "Sales Order Items"
 msgstr ""
@@ -3213,65 +3232,65 @@ msgstr ""
 msgid "No lines specified"
 msgstr ""
 
-#: order/views.py:1060
+#: order/views.py:1069
 #, python-brace-format
 msgid "Ordered {n} parts"
 msgstr ""
 
-#: order/views.py:1117
+#: order/views.py:1129
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/views.py:1123
+#: order/views.py:1135
 msgid "Supplier must match for Part and Order"
 msgstr ""
 
-#: order/views.py:1242 order/views.py:1260
+#: order/views.py:1254 order/views.py:1272
 msgid "Edit Line Item"
 msgstr ""
 
-#: order/views.py:1276 order/views.py:1288
+#: order/views.py:1288 order/views.py:1300
 msgid "Delete Line Item"
 msgstr ""
 
-#: order/views.py:1281 order/views.py:1293
+#: order/views.py:1293 order/views.py:1305
 msgid "Deleted line item"
 msgstr ""
 
-#: order/views.py:1306
+#: order/views.py:1318
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: order/views.py:1351
+#: order/views.py:1363
 #, python-brace-format
 msgid "Allocated {n} items"
 msgstr ""
 
-#: order/views.py:1367
+#: order/views.py:1379
 msgid "Select line item"
 msgstr ""
 
-#: order/views.py:1398
+#: order/views.py:1410
 msgid "No matching item for serial"
 msgstr ""
 
-#: order/views.py:1408
+#: order/views.py:1420
 msgid "is not in stock"
 msgstr ""
 
-#: order/views.py:1416
+#: order/views.py:1428
 msgid "already allocated to an order"
 msgstr ""
 
-#: order/views.py:1470
+#: order/views.py:1482
 msgid "Allocate Stock to Order"
 msgstr ""
 
-#: order/views.py:1544
+#: order/views.py:1556
 msgid "Edit Allocation Quantity"
 msgstr ""
 
-#: order/views.py:1559
+#: order/views.py:1571
 msgid "Remove allocation"
 msgstr ""
 
@@ -3457,7 +3476,7 @@ msgstr ""
 #: part/models.py:83 part/templates/part/category.html:23
 #: part/templates/part/category.html:94 part/templates/part/category.html:141
 #: templates/InvenTree/search.html:127 templates/stats.html:63
-#: users/models.py:37
+#: users/models.py:39
 msgid "Part Categories"
 msgstr ""
 
@@ -4004,7 +4023,7 @@ msgstr ""
 msgid "All parts"
 msgstr ""
 
-#: part/templates/part/category.html:29 part/views.py:2270
+#: part/templates/part/category.html:29 part/views.py:2282
 msgid "Create new part category"
 msgstr ""
 
@@ -4694,63 +4713,63 @@ msgstr ""
 msgid "Part Pricing"
 msgstr ""
 
-#: part/views.py:2069
+#: part/views.py:2081
 msgid "Create Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2079
+#: part/views.py:2091
 msgid "Edit Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2086
+#: part/views.py:2098
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2094
+#: part/views.py:2106
 msgid "Create Part Parameter"
 msgstr ""
 
-#: part/views.py:2144
+#: part/views.py:2156
 msgid "Edit Part Parameter"
 msgstr ""
 
-#: part/views.py:2158
+#: part/views.py:2170
 msgid "Delete Part Parameter"
 msgstr ""
 
-#: part/views.py:2218
+#: part/views.py:2230
 msgid "Edit Part Category"
 msgstr ""
 
-#: part/views.py:2256
+#: part/views.py:2268
 msgid "Delete Part Category"
 msgstr ""
 
-#: part/views.py:2262
+#: part/views.py:2274
 msgid "Part category was deleted"
 msgstr ""
 
-#: part/views.py:2314
+#: part/views.py:2326
 msgid "Create Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2415
+#: part/views.py:2427
 msgid "Edit Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2471
+#: part/views.py:2483
 msgid "Delete Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2490
+#: part/views.py:2502
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/views.py:2560
+#: part/views.py:2572
 msgid "Edit BOM item"
 msgstr ""
 
-#: part/views.py:2616
+#: part/views.py:2628
 msgid "Confim BOM item deletion"
 msgstr ""
 
@@ -5301,15 +5320,15 @@ msgid "Stock adjustment actions"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:164
-#: stock/templates/stock/location.html:65 templates/stock_table.html:56
+#: stock/templates/stock/location.html:65 templates/stock_table.html:57
 msgid "Count stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:167 templates/stock_table.html:54
+#: stock/templates/stock/item_base.html:167 templates/stock_table.html:55
 msgid "Add stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:170 templates/stock_table.html:55
+#: stock/templates/stock/item_base.html:170 templates/stock_table.html:56
 msgid "Remove stock"
 msgstr ""
 
@@ -5503,7 +5522,7 @@ msgid "Stock Details"
 msgstr ""
 
 #: stock/templates/stock/location.html:117 templates/InvenTree/search.html:279
-#: templates/stats.html:76 users/models.py:39
+#: templates/stats.html:76 users/models.py:41
 msgid "Stock Locations"
 msgstr ""
 
@@ -5689,7 +5708,7 @@ msgstr ""
 msgid "Add Stock Items"
 msgstr ""
 
-#: stock/views.py:1001 users/models.py:180
+#: stock/views.py:1001 users/models.py:183
 msgid "Add"
 msgstr ""
 
@@ -5867,6 +5886,31 @@ msgstr ""
 msgid "No stock location set"
 msgstr ""
 
+#: templates/InvenTree/settings/appearance.html:10
+msgid "Theme Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:17
+msgid "Color Themes"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:29
+#, python-format
+msgid ""
+"\n"
+"        The CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
+"        Please select another color theme :)\n"
+"    "
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:39
+msgid "Language"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:61
+msgid "Set Language"
+msgstr ""
+
 #: templates/InvenTree/settings/build.html:10
 msgid "Build Order Settings"
 msgstr ""
@@ -5950,7 +5994,7 @@ msgstr ""
 msgid "Stock Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:49
+#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:50
 msgid "Stock Options"
 msgstr ""
 
@@ -5964,7 +6008,7 @@ msgid "Account"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:9
-msgid "Theme"
+msgid "Appearance"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:13
@@ -5983,22 +6027,6 @@ msgstr ""
 msgid "Categories"
 msgstr ""
 
-#: templates/InvenTree/settings/theme.html:10
-msgid "Theme Settings"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:17
-msgid "Color Themes"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:29
-#, python-format
-msgid "\n"
-"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
-"\t\tPlease select another color theme :)\n"
-"\t"
-msgstr ""
-
 #: templates/InvenTree/settings/user.html:16
 msgid "User Information"
 msgstr ""
@@ -6061,13 +6089,23 @@ msgid "View Code on GitHub"
 msgstr ""
 
 #: templates/about.html:63
-msgid "Get the App"
+msgid "Credits"
 msgstr ""
 
 #: templates/about.html:68
+msgid "Mobile App"
+msgstr ""
+
+#: templates/about.html:73
 msgid "Submit Bug Report"
 msgstr ""
 
+#: templates/about.html:82 templates/js/modals.js:550
+#: templates/js/modals.js:809 templates/modals.html:28 templates/modals.html:52
+#: templates/modals.html:93
+msgid "Close"
+msgstr ""
+
 #: templates/attachment_table.html:6
 msgid "Add Attachment"
 msgstr ""
@@ -6263,7 +6301,7 @@ msgid "Quantity Per"
 msgstr ""
 
 #: templates/js/build.js:638 templates/js/build.js:1056
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order stock"
 msgstr ""
 
@@ -6396,11 +6434,6 @@ msgstr ""
 msgid "Submit"
 msgstr ""
 
-#: templates/js/modals.js:550 templates/js/modals.js:809
-#: templates/modals.html:28 templates/modals.html:52 templates/modals.html:93
-msgid "Close"
-msgstr ""
-
 #: templates/js/modals.js:760
 msgid "Invalid response from server"
 msgstr ""
@@ -6974,6 +7007,10 @@ msgstr ""
 msgid "Form errors exist"
 msgstr ""
 
+#: templates/navbar.html:13
+msgid "Toggle navigation"
+msgstr ""
+
 #: templates/navbar.html:33
 msgid "Buy"
 msgstr ""
@@ -6986,7 +7023,7 @@ msgstr ""
 msgid "Scan Barcode"
 msgstr ""
 
-#: templates/navbar.html:77 users/models.py:36
+#: templates/navbar.html:77 users/models.py:38
 msgid "Admin"
 msgstr ""
 
@@ -7118,43 +7155,43 @@ msgstr ""
 msgid "Print test reports"
 msgstr ""
 
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
 msgid "Add to selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:55
+#: templates/stock_table.html:56
 msgid "Remove from selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:56
+#: templates/stock_table.html:57
 msgid "Stocktake selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move stock"
 msgstr ""
 
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order selected items"
 msgstr ""
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change status"
 msgstr ""
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change stock status"
 msgstr ""
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete selected items"
 msgstr ""
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete Stock"
 msgstr ""
 
@@ -7190,35 +7227,34 @@ msgstr ""
 msgid "Important dates"
 msgstr ""
 
-#: users/models.py:167
+#: users/models.py:170
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:175
+#: users/models.py:178
 msgid "Group"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "View"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:180
+#: users/models.py:183
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Change"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:184
+#: users/models.py:187
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.mo b/InvenTree/locale/ja/LC_MESSAGES/django.mo
index 314bedb17d..c8fe740f6a 100644
Binary files a/InvenTree/locale/ja/LC_MESSAGES/django.mo and b/InvenTree/locale/ja/LC_MESSAGES/django.mo differ
diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po
index 14111c5c02..23cec9e6fb 100644
--- a/InvenTree/locale/ja/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ja/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-04-21 09:17+0000\n"
+"POT-Creation-Date: 2021-05-05 17:33+1000\n"
 "PO-Revision-Date: 2021-04-21 09:33\n"
 "Last-Translator: \n"
 "Language-Team: Japanese\n"
@@ -67,35 +67,36 @@ msgstr ""
 msgid "Select Category"
 msgstr ""
 
-#: InvenTree/helpers.py:375 order/models.py:245 order/models.py:344
-#: stock/views.py:1763
-msgid "Invalid quantity provided"
-msgstr ""
-
-#: InvenTree/helpers.py:378
-msgid "Empty serial number string"
-msgstr ""
-
-#: InvenTree/helpers.py:399
+#: InvenTree/helpers.py:377
 #, python-brace-format
 msgid "Duplicate serial: {n}"
 msgstr ""
 
-#: InvenTree/helpers.py:403 InvenTree/helpers.py:406 InvenTree/helpers.py:409
+#: InvenTree/helpers.py:384 order/models.py:245 order/models.py:353
+#: stock/views.py:1763
+msgid "Invalid quantity provided"
+msgstr ""
+
+#: InvenTree/helpers.py:387
+msgid "Empty serial number string"
+msgstr ""
+
+#: InvenTree/helpers.py:409 InvenTree/helpers.py:412 InvenTree/helpers.py:415
+#: InvenTree/helpers.py:440
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:445
 #, python-brace-format
 msgid "Duplicate serial: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:422
+#: InvenTree/helpers.py:453
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:426
+#: InvenTree/helpers.py:457
 #, python-brace-format
 msgid "Number of unique serial number ({s}) must match quantity ({q})"
 msgstr ""
@@ -140,7 +141,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_base.html:72
 #: company/templates/company/supplier_part_base.html:71
 #: company/templates/company/supplier_part_detail.html:31 label/models.py:108
-#: order/models.py:101 order/templates/order/purchase_order_detail.html:168
+#: order/models.py:101 order/templates/order/purchase_order_detail.html:143
 #: part/models.py:710 part/templates/part/detail.html:54
 #: part/templates/part/set_category.html:14 report/models.py:192
 #: report/models.py:505 report/models.py:544
@@ -165,23 +166,23 @@ msgstr ""
 msgid "parent"
 msgstr ""
 
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:491
 msgid "English"
 msgstr ""
 
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:492
 msgid "French"
 msgstr ""
 
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:493
 msgid "German"
 msgstr ""
 
-#: InvenTree/settings.py:496
+#: InvenTree/settings.py:494
 msgid "Polish"
 msgstr ""
 
-#: InvenTree/settings.py:497
+#: InvenTree/settings.py:495
 msgid "Turkish"
 msgstr ""
 
@@ -375,16 +376,16 @@ msgstr ""
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1227
+#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1241
 #: build/templates/build/allocation_card.html:23
 #: build/templates/build/auto_allocate.html:17
 #: build/templates/build/build_base.html:123
 #: build/templates/build/detail.html:31 common/models.py:703
 #: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77
 #: order/forms.py:188 order/forms.py:205 order/forms.py:239 order/forms.py:261
-#: order/forms.py:278 order/models.py:593 order/models.py:784
+#: order/forms.py:278 order/models.py:603 order/models.py:794
 #: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:200
+#: order/templates/order/purchase_order_detail.html:175
 #: order/templates/order/sales_order_detail.html:70
 #: order/templates/order/sales_order_detail.html:77
 #: order/templates/order/sales_order_detail.html:159
@@ -458,7 +459,7 @@ msgid "Location of completed parts"
 msgstr ""
 
 #: build/forms.py:215 build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:59 order/models.py:445
+#: build/templates/build/detail.html:59 order/models.py:455
 #: order/templates/order/receive_parts.html:24
 #: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
 #: templates/js/barcode.js:119 templates/js/build.js:770
@@ -508,7 +509,7 @@ msgstr ""
 #: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55
 #: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183
 #: templates/InvenTree/search.html:185
-#: templates/InvenTree/settings/tabs.html:31 users/models.py:41
+#: templates/InvenTree/settings/tabs.html:31 users/models.py:43
 msgid "Build Orders"
 msgstr ""
 
@@ -516,8 +517,8 @@ msgstr ""
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:127 order/models.py:99 order/models.py:595
-#: order/templates/order/purchase_order_detail.html:195
+#: build/models.py:127 order/models.py:99 order/models.py:605
+#: order/templates/order/purchase_order_detail.html:170
 #: order/templates/order/sales_order_detail.html:219 part/models.py:2187
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197
@@ -540,10 +541,10 @@ msgstr ""
 
 #: build/models.py:152 build/templates/build/auto_allocate.html:16
 #: build/templates/build/build_base.html:118
-#: build/templates/build/detail.html:26 company/models.py:669
-#: order/models.py:637 order/models.py:669
+#: build/templates/build/detail.html:26 company/models.py:688
+#: order/models.py:647 order/models.py:679
 #: order/templates/order/order_wizard/select_parts.html:30
-#: order/templates/order/purchase_order_detail.html:156
+#: order/templates/order/purchase_order_detail.html:131
 #: order/templates/order/receive_parts.html:19
 #: order/templates/order/sales_order_detail.html:207 part/models.py:321
 #: part/models.py:1876 part/models.py:1888 part/models.py:1906
@@ -628,7 +629,7 @@ msgstr ""
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:223 order/models.py:451
+#: build/models.py:223 order/models.py:461
 msgid "Target completion date"
 msgstr ""
 
@@ -678,9 +679,9 @@ msgstr ""
 #: company/models.py:135 company/models.py:501
 #: company/templates/company/navbar.html:70
 #: company/templates/company/navbar.html:73 order/models.py:123
-#: order/models.py:597 order/templates/order/po_navbar.html:29
+#: order/models.py:607 order/templates/order/po_navbar.html:29
 #: order/templates/order/po_navbar.html:32
-#: order/templates/order/purchase_order_detail.html:234
+#: order/templates/order/purchase_order_detail.html:209
 #: order/templates/order/sales_order_detail.html:264
 #: order/templates/order/so_navbar.html:33
 #: order/templates/order/so_navbar.html:36 part/models.py:871
@@ -713,47 +714,47 @@ msgstr ""
 msgid "Completed build output"
 msgstr ""
 
-#: build/models.py:1118
+#: build/models.py:1132
 msgid "BuildItem must be unique for build, stock_item and install_into"
 msgstr ""
 
-#: build/models.py:1143
+#: build/models.py:1157
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1147
+#: build/models.py:1161
 #, python-brace-format
 msgid "Selected stock item not found in BOM for part '{p}'"
 msgstr ""
 
-#: build/models.py:1151
+#: build/models.py:1165
 #, python-brace-format
 msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
 msgstr ""
 
-#: build/models.py:1158 order/models.py:758
+#: build/models.py:1172 order/models.py:768
 msgid "StockItem is over-allocated"
 msgstr ""
 
-#: build/models.py:1162 order/models.py:761
+#: build/models.py:1176 order/models.py:771
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1166
+#: build/models.py:1180
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1206 stock/templates/stock/item_base.html:306
+#: build/models.py:1220 stock/templates/stock/item_base.html:306
 #: templates/InvenTree/search.html:183 templates/js/build.js:714
 #: templates/navbar.html:29
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1207
+#: build/models.py:1221
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1214 part/templates/part/allocation.html:18
+#: build/models.py:1228 part/templates/part/allocation.html:18
 #: part/templates/part/allocation.html:24
 #: part/templates/part/allocation.html:31
 #: part/templates/part/allocation.html:49
@@ -765,19 +766,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1215
+#: build/models.py:1229
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1228
+#: build/models.py:1242
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1236
+#: build/models.py:1250
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1237
+#: build/models.py:1251
 msgid "Destination stock item"
 msgstr ""
 
@@ -801,7 +802,7 @@ msgstr ""
 msgid "Unallocate stock"
 msgstr ""
 
-#: build/templates/build/allocate.html:26 build/views.py:308 build/views.py:794
+#: build/templates/build/allocate.html:26 build/views.py:319 build/views.py:805
 msgid "Unallocate Stock"
 msgstr ""
 
@@ -811,7 +812,7 @@ msgstr ""
 
 #: build/templates/build/allocate.html:30
 #: company/templates/company/detail_manufacturer_part.html:33
-#: company/templates/company/detail_supplier_part.html:32 order/views.py:794
+#: company/templates/company/detail_supplier_part.html:32 order/views.py:795
 #: part/templates/part/category.html:127
 msgid "Order Parts"
 msgstr ""
@@ -954,7 +955,7 @@ msgid "Progress"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:84 order/models.py:667
+#: build/templates/build/detail.html:84 order/models.py:677
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:33
 #: order/templates/order/sales_order_ship.html:25
@@ -1139,7 +1140,7 @@ msgstr ""
 msgid "Alter the quantity of stock allocated to the build output"
 msgstr ""
 
-#: build/templates/build/index.html:28 build/views.py:667
+#: build/templates/build/index.html:28 build/views.py:678
 msgid "New Build Order"
 msgstr ""
 
@@ -1226,141 +1227,145 @@ msgstr ""
 msgid "Create Build Output"
 msgstr ""
 
-#: build/views.py:173 stock/models.py:969 stock/views.py:1789
+#: build/views.py:168
+msgid "Maximum output quantity is "
+msgstr ""
+
+#: build/views.py:184 stock/models.py:969 stock/views.py:1789
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: build/views.py:182
+#: build/views.py:193
 msgid "Serial numbers required for trackable build output"
 msgstr ""
 
-#: build/views.py:248
+#: build/views.py:259
 msgid "Delete Build Output"
 msgstr ""
 
-#: build/views.py:269 build/views.py:359
+#: build/views.py:280 build/views.py:370
 msgid "Confirm unallocation of build stock"
 msgstr ""
 
-#: build/views.py:270 build/views.py:360 stock/views.py:425
+#: build/views.py:281 build/views.py:371 stock/views.py:425
 msgid "Check the confirmation box"
 msgstr ""
 
-#: build/views.py:282
+#: build/views.py:293
 msgid "Build output does not match build"
 msgstr ""
 
-#: build/views.py:284 build/views.py:485
+#: build/views.py:295 build/views.py:496
 msgid "Build output must be specified"
 msgstr ""
 
-#: build/views.py:296
+#: build/views.py:307
 msgid "Build output deleted"
 msgstr ""
 
-#: build/views.py:394
+#: build/views.py:405
 msgid "Complete Build Order"
 msgstr ""
 
-#: build/views.py:400
+#: build/views.py:411
 msgid "Build order cannot be completed - incomplete outputs remain"
 msgstr ""
 
-#: build/views.py:411
+#: build/views.py:422
 msgid "Completed build order"
 msgstr ""
 
-#: build/views.py:427
+#: build/views.py:438
 msgid "Complete Build Output"
 msgstr ""
 
-#: build/views.py:469
+#: build/views.py:480
 msgid "Invalid stock status value selected"
 msgstr ""
 
-#: build/views.py:476
+#: build/views.py:487
 msgid "Quantity to complete cannot exceed build output quantity"
 msgstr ""
 
-#: build/views.py:482
+#: build/views.py:493
 msgid "Confirm completion of incomplete build"
 msgstr ""
 
-#: build/views.py:581
+#: build/views.py:592
 msgid "Build output completed"
 msgstr ""
 
-#: build/views.py:721
+#: build/views.py:732
 msgid "Created new build"
 msgstr ""
 
-#: build/views.py:742
+#: build/views.py:753
 msgid "Edit Build Order Details"
 msgstr ""
 
-#: build/views.py:775
+#: build/views.py:786
 msgid "Edited build"
 msgstr ""
 
-#: build/views.py:784
+#: build/views.py:795
 msgid "Delete Build Order"
 msgstr ""
 
-#: build/views.py:799
+#: build/views.py:810
 msgid "Removed parts from build allocation"
 msgstr ""
 
-#: build/views.py:811
+#: build/views.py:822
 msgid "Allocate stock to build output"
 msgstr ""
 
-#: build/views.py:854
+#: build/views.py:865
 msgid "Item must be currently in stock"
 msgstr ""
 
-#: build/views.py:860
+#: build/views.py:871
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/views.py:861 templates/js/bom.js:230 templates/js/build.js:575
+#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:575
 #: templates/js/build.js:838 templates/js/build.js:1021
 msgid "Available"
 msgstr ""
 
-#: build/views.py:863
+#: build/views.py:874
 msgid "Stock item must be selected"
 msgstr ""
 
-#: build/views.py:1026
+#: build/views.py:1037
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: build/views.py:1030
+#: build/views.py:1041
 msgid "Updated Build Item"
 msgstr ""
 
-#: build/views.py:1059
+#: build/views.py:1070
 msgid "Add Build Order Attachment"
 msgstr ""
 
-#: build/views.py:1072 order/views.py:110 order/views.py:162 part/views.py:172
+#: build/views.py:1083 order/views.py:110 order/views.py:162 part/views.py:172
 #: stock/views.py:277
 msgid "Added attachment"
 msgstr ""
 
-#: build/views.py:1108 order/views.py:189 order/views.py:210
+#: build/views.py:1119 order/views.py:189 order/views.py:210
 msgid "Edit Attachment"
 msgstr ""
 
-#: build/views.py:1118 order/views.py:193 order/views.py:214
+#: build/views.py:1129 order/views.py:193 order/views.py:214
 msgid "Attachment updated"
 msgstr ""
 
-#: build/views.py:1128 order/views.py:229 order/views.py:243
+#: build/views.py:1139 order/views.py:229 order/views.py:243
 msgid "Delete Attachment"
 msgstr ""
 
-#: build/views.py:1133 order/views.py:235 order/views.py:249 stock/views.py:333
+#: build/views.py:1144 order/views.py:235 order/views.py:249 stock/views.py:333
 msgid "Deleted attachment"
 msgstr ""
 
@@ -1766,7 +1771,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_detail.html:26
 #: company/templates/company/supplier_part_base.html:101
 #: company/templates/company/supplier_part_detail.html:35
-#: order/templates/order/purchase_order_detail.html:183 part/bom.py:171
+#: order/templates/order/purchase_order_detail.html:158 part/bom.py:171
 #: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307
 msgid "MPN"
 msgstr ""
@@ -1865,7 +1870,7 @@ msgstr ""
 msgid "Base Part"
 msgstr ""
 
-#: company/models.py:312 company/models.py:463 order/views.py:1372
+#: company/models.py:312 company/models.py:463 order/views.py:1384
 msgid "Select part"
 msgstr ""
 
@@ -1905,7 +1910,7 @@ msgstr ""
 
 #: company/models.py:475 company/templates/company/supplier_part_base.html:88
 #: company/templates/company/supplier_part_detail.html:26
-#: order/templates/order/purchase_order_detail.html:174 part/bom.py:176
+#: order/templates/order/purchase_order_detail.html:149 part/bom.py:176
 #: part/bom.py:287
 msgid "SKU"
 msgstr ""
@@ -2017,7 +2022,8 @@ msgstr ""
 
 #: company/templates/company/delete.html:12
 #, python-format
-msgid "There are %(count)s parts sourced from this company.<br>\n"
+msgid ""
+"There are %(count)s parts sourced from this company.<br>\n"
 "If this supplier is deleted, these supplier part entries will also be deleted."
 msgstr ""
 
@@ -2033,7 +2039,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/detail.html:67 order/models.py:440
+#: company/templates/company/detail.html:67 order/models.py:450
 #: order/templates/order/sales_order_base.html:92 stock/models.py:415
 #: stock/models.py:416 stock/templates/stock/item_base.html:251
 #: templates/js/company.js:40 templates/js/order.js:267
@@ -2122,13 +2128,13 @@ msgstr ""
 
 #: company/templates/company/detail_supplier_part.html:21
 #: order/templates/order/order_wizard/select_parts.html:42
-#: order/templates/order/purchase_order_detail.html:75
+#: order/templates/order/purchase_order_detail.html:50
 msgid "Create new supplier part"
 msgstr ""
 
 #: company/templates/company/detail_supplier_part.html:22
 #: company/templates/company/manufacturer_part_suppliers.html:17
-#: order/templates/order/purchase_order_detail.html:74
+#: order/templates/order/purchase_order_detail.html:49
 #: part/templates/part/supplier.html:17 templates/js/stock.js:1163
 msgid "New Supplier Part"
 msgstr ""
@@ -2226,7 +2232,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_suppliers.html:22
 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44
 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22
-#: stock/views.py:1002 users/models.py:184
+#: stock/views.py:1002 users/models.py:187
 msgid "Delete"
 msgstr ""
 
@@ -2252,7 +2258,7 @@ msgstr ""
 #: stock/templates/stock/location_navbar.html:22
 #: stock/templates/stock/location_navbar.html:29
 #: templates/InvenTree/search.html:198 templates/js/stock.js:968
-#: templates/stats.html:72 templates/stats.html:81 users/models.py:40
+#: templates/stats.html:72 templates/stats.html:81 users/models.py:42
 msgid "Stock Items"
 msgstr ""
 
@@ -2266,7 +2272,7 @@ msgstr ""
 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228
 #: templates/InvenTree/search.html:345
 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:46
-#: users/models.py:43
+#: users/models.py:45
 msgid "Sales Orders"
 msgstr ""
 
@@ -2278,7 +2284,7 @@ msgstr ""
 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205
 #: templates/InvenTree/search.html:325
 #: templates/InvenTree/settings/tabs.html:34 templates/navbar.html:37
-#: users/models.py:42
+#: users/models.py:44
 msgid "Purchase Orders"
 msgstr ""
 
@@ -2357,7 +2363,7 @@ msgid "Pricing Information"
 msgstr ""
 
 #: company/templates/company/supplier_part_pricing.html:19 company/views.py:794
-#: part/templates/part/sale_prices.html:17 part/views.py:2624
+#: part/templates/part/sale_prices.html:17 part/views.py:2636
 msgid "Add Price Break"
 msgstr ""
 
@@ -2467,15 +2473,15 @@ msgstr ""
 msgid "Delete Supplier Part"
 msgstr ""
 
-#: company/views.py:799 part/views.py:2628
+#: company/views.py:799 part/views.py:2640
 msgid "Added new price break"
 msgstr ""
 
-#: company/views.py:855 part/views.py:2672
+#: company/views.py:855 part/views.py:2684
 msgid "Edit Price Break"
 msgstr ""
 
-#: company/views.py:870 part/views.py:2686
+#: company/views.py:870 part/views.py:2698
 msgid "Delete Price Break"
 msgstr ""
 
@@ -2565,7 +2571,7 @@ msgstr ""
 msgid "Enter sales order number"
 msgstr ""
 
-#: order/forms.py:145 order/models.py:452
+#: order/forms.py:145 order/models.py:462
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
@@ -2601,7 +2607,7 @@ msgstr ""
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:182 order/models.py:445
+#: order/models.py:182 order/models.py:455
 msgid "Purchase order status"
 msgstr ""
 
@@ -2642,8 +2648,8 @@ msgstr ""
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:243 order/models.py:342 part/views.py:1586
-#: stock/models.py:270 stock/models.py:953
+#: order/models.py:243 part/views.py:1586 stock/models.py:270
+#: stock/models.py:953
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -2651,120 +2657,128 @@ msgstr ""
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:337
+#: order/models.py:344
 msgid "Lines can only be received against an order marked as 'Placed'"
 msgstr ""
 
-#: order/models.py:359
+#: order/models.py:348
+msgid "Quantity must be an integer"
+msgstr ""
+
+#: order/models.py:350
+msgid "Quantity must be a positive number"
+msgstr ""
+
+#: order/models.py:369
 msgid "Received items"
 msgstr ""
 
-#: order/models.py:441
+#: order/models.py:451
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:455 templates/js/order.js:303
+#: order/models.py:465 templates/js/order.js:303
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:462
+#: order/models.py:472
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:506
+#: order/models.py:516
 msgid "SalesOrder cannot be shipped as it is not currently pending"
 msgstr ""
 
-#: order/models.py:593
+#: order/models.py:603
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:595
+#: order/models.py:605
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:597
+#: order/models.py:607
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:623 order/models.py:667
+#: order/models.py:633 order/models.py:677
 #: part/templates/part/allocation.html:17
 #: part/templates/part/allocation.html:45
 msgid "Order"
 msgstr ""
 
-#: order/models.py:624 order/templates/order/order_base.html:9
+#: order/models.py:634 order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:24
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:313 templates/js/order.js:148
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:638
+#: order/models.py:648
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:641 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:214
+#: order/models.py:651 order/templates/order/order_base.html:131
+#: order/templates/order/purchase_order_detail.html:189
 #: order/templates/order/receive_parts.html:22
 #: order/templates/order/sales_order_base.html:131
 msgid "Received"
 msgstr ""
 
-#: order/models.py:641
+#: order/models.py:651
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:648 stock/models.py:508
+#: order/models.py:658 stock/models.py:508
 #: stock/templates/stock/item_base.html:320
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:649
+#: order/models.py:659
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:743 order/models.py:745
+#: order/models.py:753 order/models.py:755
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:749
+#: order/models.py:759
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:751
+#: order/models.py:761
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:754
+#: order/models.py:764
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:764
+#: order/models.py:774
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:769
+#: order/models.py:779
 msgid "Line"
 msgstr ""
 
-#: order/models.py:780
+#: order/models.py:790
 msgid "Item"
 msgstr ""
 
-#: order/models.py:781
+#: order/models.py:791
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:784
+#: order/models.py:794
 msgid "Enter stock allocation quantity"
 msgstr ""
 
@@ -2812,9 +2826,22 @@ msgstr ""
 msgid "Issued"
 msgstr ""
 
-#: order/templates/order/order_cancel.html:7
-#: order/templates/order/sales_order_cancel.html:9
-msgid "Cancelling this order means that the order will no longer be editable."
+#: order/templates/order/order_base.html:180
+#: order/templates/order/purchase_order_detail.html:100
+#: part/templates/part/category.html:185 part/templates/part/category.html:227
+#: stock/templates/stock/location.html:191 templates/js/stock.js:708
+#: templates/js/stock.js:1169
+msgid "New Location"
+msgstr ""
+
+#: order/templates/order/order_base.html:181
+#: order/templates/order/purchase_order_detail.html:101
+#: stock/templates/stock/location.html:42
+msgid "Create new stock location"
+msgstr ""
+
+#: order/templates/order/order_cancel.html:8
+msgid "Cancelling this order means that the order and line items will no longer be editable."
 msgstr ""
 
 #: order/templates/order/order_complete.html:7
@@ -2826,10 +2853,10 @@ msgid "This order has line items which have not been marked as received."
 msgstr ""
 
 #: order/templates/order/order_complete.html:11
-msgid "Marking this order as complete will remove these line items."
+msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: order/templates/order/order_issue.html:7
+#: order/templates/order/order_issue.html:8
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
@@ -2881,11 +2908,13 @@ msgid "Select Purchase Order"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_pos.html:45
-msgid "Create new purchase order for {{ supplier.name }}"
+#, python-format
+msgid "Create new purchase order for %(name)s"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_pos.html:68
-msgid "Select a purchase order for"
+#, python-format
+msgid "Select a purchase order for %(name)s"
 msgstr ""
 
 #: order/templates/order/po_attachments.html:12
@@ -2907,43 +2936,29 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py:1108
-#: order/views.py:1191
+#: order/templates/order/sales_order_detail.html:22 order/views.py:1120
+#: order/views.py:1203
 msgid "Add Line Item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:45
-#: order/templates/order/purchase_order_detail.html:125
-#: part/templates/part/category.html:185 part/templates/part/category.html:227
-#: stock/templates/stock/location.html:191 templates/js/stock.js:708
-#: templates/js/stock.js:1169
-msgid "New Location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:46
-#: order/templates/order/purchase_order_detail.html:126
-#: stock/templates/stock/location.html:42
-msgid "Create new stock location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:139
+#: order/templates/order/purchase_order_detail.html:114
 msgid "No line items found"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:205
+#: order/templates/order/purchase_order_detail.html:180
 msgid "Unit Price"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:246
+#: order/templates/order/purchase_order_detail.html:221
 #: order/templates/order/sales_order_detail.html:294
 msgid "Edit line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:247
+#: order/templates/order/purchase_order_detail.html:222
 msgid "Delete line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:252
+#: order/templates/order/purchase_order_detail.html:227
 msgid "Receive line item"
 msgstr ""
 
@@ -2966,7 +2981,7 @@ msgstr ""
 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114
 #: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:577
 #: templates/navbar.html:23 templates/stats.html:59 templates/stats.html:68
-#: users/models.py:38
+#: users/models.py:40
 msgid "Parts"
 msgstr ""
 
@@ -3019,6 +3034,10 @@ msgstr ""
 msgid "Warning"
 msgstr ""
 
+#: order/templates/order/sales_order_cancel.html:9
+msgid "Cancelling this order means that the order will no longer be editable."
+msgstr ""
+
 #: order/templates/order/sales_order_detail.html:13
 msgid "Sales Order Items"
 msgstr ""
@@ -3213,65 +3232,65 @@ msgstr ""
 msgid "No lines specified"
 msgstr ""
 
-#: order/views.py:1060
+#: order/views.py:1069
 #, python-brace-format
 msgid "Ordered {n} parts"
 msgstr ""
 
-#: order/views.py:1117
+#: order/views.py:1129
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/views.py:1123
+#: order/views.py:1135
 msgid "Supplier must match for Part and Order"
 msgstr ""
 
-#: order/views.py:1242 order/views.py:1260
+#: order/views.py:1254 order/views.py:1272
 msgid "Edit Line Item"
 msgstr ""
 
-#: order/views.py:1276 order/views.py:1288
+#: order/views.py:1288 order/views.py:1300
 msgid "Delete Line Item"
 msgstr ""
 
-#: order/views.py:1281 order/views.py:1293
+#: order/views.py:1293 order/views.py:1305
 msgid "Deleted line item"
 msgstr ""
 
-#: order/views.py:1306
+#: order/views.py:1318
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: order/views.py:1351
+#: order/views.py:1363
 #, python-brace-format
 msgid "Allocated {n} items"
 msgstr ""
 
-#: order/views.py:1367
+#: order/views.py:1379
 msgid "Select line item"
 msgstr ""
 
-#: order/views.py:1398
+#: order/views.py:1410
 msgid "No matching item for serial"
 msgstr ""
 
-#: order/views.py:1408
+#: order/views.py:1420
 msgid "is not in stock"
 msgstr ""
 
-#: order/views.py:1416
+#: order/views.py:1428
 msgid "already allocated to an order"
 msgstr ""
 
-#: order/views.py:1470
+#: order/views.py:1482
 msgid "Allocate Stock to Order"
 msgstr ""
 
-#: order/views.py:1544
+#: order/views.py:1556
 msgid "Edit Allocation Quantity"
 msgstr ""
 
-#: order/views.py:1559
+#: order/views.py:1571
 msgid "Remove allocation"
 msgstr ""
 
@@ -3457,7 +3476,7 @@ msgstr ""
 #: part/models.py:83 part/templates/part/category.html:23
 #: part/templates/part/category.html:94 part/templates/part/category.html:141
 #: templates/InvenTree/search.html:127 templates/stats.html:63
-#: users/models.py:37
+#: users/models.py:39
 msgid "Part Categories"
 msgstr ""
 
@@ -4004,7 +4023,7 @@ msgstr ""
 msgid "All parts"
 msgstr ""
 
-#: part/templates/part/category.html:29 part/views.py:2270
+#: part/templates/part/category.html:29 part/views.py:2282
 msgid "Create new part category"
 msgstr ""
 
@@ -4694,63 +4713,63 @@ msgstr ""
 msgid "Part Pricing"
 msgstr ""
 
-#: part/views.py:2069
+#: part/views.py:2081
 msgid "Create Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2079
+#: part/views.py:2091
 msgid "Edit Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2086
+#: part/views.py:2098
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2094
+#: part/views.py:2106
 msgid "Create Part Parameter"
 msgstr ""
 
-#: part/views.py:2144
+#: part/views.py:2156
 msgid "Edit Part Parameter"
 msgstr ""
 
-#: part/views.py:2158
+#: part/views.py:2170
 msgid "Delete Part Parameter"
 msgstr ""
 
-#: part/views.py:2218
+#: part/views.py:2230
 msgid "Edit Part Category"
 msgstr ""
 
-#: part/views.py:2256
+#: part/views.py:2268
 msgid "Delete Part Category"
 msgstr ""
 
-#: part/views.py:2262
+#: part/views.py:2274
 msgid "Part category was deleted"
 msgstr ""
 
-#: part/views.py:2314
+#: part/views.py:2326
 msgid "Create Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2415
+#: part/views.py:2427
 msgid "Edit Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2471
+#: part/views.py:2483
 msgid "Delete Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2490
+#: part/views.py:2502
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/views.py:2560
+#: part/views.py:2572
 msgid "Edit BOM item"
 msgstr ""
 
-#: part/views.py:2616
+#: part/views.py:2628
 msgid "Confim BOM item deletion"
 msgstr ""
 
@@ -5301,15 +5320,15 @@ msgid "Stock adjustment actions"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:164
-#: stock/templates/stock/location.html:65 templates/stock_table.html:56
+#: stock/templates/stock/location.html:65 templates/stock_table.html:57
 msgid "Count stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:167 templates/stock_table.html:54
+#: stock/templates/stock/item_base.html:167 templates/stock_table.html:55
 msgid "Add stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:170 templates/stock_table.html:55
+#: stock/templates/stock/item_base.html:170 templates/stock_table.html:56
 msgid "Remove stock"
 msgstr ""
 
@@ -5503,7 +5522,7 @@ msgid "Stock Details"
 msgstr ""
 
 #: stock/templates/stock/location.html:117 templates/InvenTree/search.html:279
-#: templates/stats.html:76 users/models.py:39
+#: templates/stats.html:76 users/models.py:41
 msgid "Stock Locations"
 msgstr ""
 
@@ -5689,7 +5708,7 @@ msgstr ""
 msgid "Add Stock Items"
 msgstr ""
 
-#: stock/views.py:1001 users/models.py:180
+#: stock/views.py:1001 users/models.py:183
 msgid "Add"
 msgstr ""
 
@@ -5867,6 +5886,31 @@ msgstr ""
 msgid "No stock location set"
 msgstr ""
 
+#: templates/InvenTree/settings/appearance.html:10
+msgid "Theme Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:17
+msgid "Color Themes"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:29
+#, python-format
+msgid ""
+"\n"
+"        The CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
+"        Please select another color theme :)\n"
+"    "
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:39
+msgid "Language"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:61
+msgid "Set Language"
+msgstr ""
+
 #: templates/InvenTree/settings/build.html:10
 msgid "Build Order Settings"
 msgstr ""
@@ -5950,7 +5994,7 @@ msgstr ""
 msgid "Stock Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:49
+#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:50
 msgid "Stock Options"
 msgstr ""
 
@@ -5964,7 +6008,7 @@ msgid "Account"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:9
-msgid "Theme"
+msgid "Appearance"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:13
@@ -5983,22 +6027,6 @@ msgstr ""
 msgid "Categories"
 msgstr ""
 
-#: templates/InvenTree/settings/theme.html:10
-msgid "Theme Settings"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:17
-msgid "Color Themes"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:29
-#, python-format
-msgid "\n"
-"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
-"\t\tPlease select another color theme :)\n"
-"\t"
-msgstr ""
-
 #: templates/InvenTree/settings/user.html:16
 msgid "User Information"
 msgstr ""
@@ -6061,13 +6089,23 @@ msgid "View Code on GitHub"
 msgstr ""
 
 #: templates/about.html:63
-msgid "Get the App"
+msgid "Credits"
 msgstr ""
 
 #: templates/about.html:68
+msgid "Mobile App"
+msgstr ""
+
+#: templates/about.html:73
 msgid "Submit Bug Report"
 msgstr ""
 
+#: templates/about.html:82 templates/js/modals.js:550
+#: templates/js/modals.js:809 templates/modals.html:28 templates/modals.html:52
+#: templates/modals.html:93
+msgid "Close"
+msgstr ""
+
 #: templates/attachment_table.html:6
 msgid "Add Attachment"
 msgstr ""
@@ -6263,7 +6301,7 @@ msgid "Quantity Per"
 msgstr ""
 
 #: templates/js/build.js:638 templates/js/build.js:1056
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order stock"
 msgstr ""
 
@@ -6396,11 +6434,6 @@ msgstr ""
 msgid "Submit"
 msgstr ""
 
-#: templates/js/modals.js:550 templates/js/modals.js:809
-#: templates/modals.html:28 templates/modals.html:52 templates/modals.html:93
-msgid "Close"
-msgstr ""
-
 #: templates/js/modals.js:760
 msgid "Invalid response from server"
 msgstr ""
@@ -6974,6 +7007,10 @@ msgstr ""
 msgid "Form errors exist"
 msgstr ""
 
+#: templates/navbar.html:13
+msgid "Toggle navigation"
+msgstr ""
+
 #: templates/navbar.html:33
 msgid "Buy"
 msgstr ""
@@ -6986,7 +7023,7 @@ msgstr ""
 msgid "Scan Barcode"
 msgstr ""
 
-#: templates/navbar.html:77 users/models.py:36
+#: templates/navbar.html:77 users/models.py:38
 msgid "Admin"
 msgstr ""
 
@@ -7118,43 +7155,43 @@ msgstr ""
 msgid "Print test reports"
 msgstr ""
 
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
 msgid "Add to selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:55
+#: templates/stock_table.html:56
 msgid "Remove from selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:56
+#: templates/stock_table.html:57
 msgid "Stocktake selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move stock"
 msgstr ""
 
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order selected items"
 msgstr ""
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change status"
 msgstr ""
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change stock status"
 msgstr ""
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete selected items"
 msgstr ""
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete Stock"
 msgstr ""
 
@@ -7190,34 +7227,34 @@ msgstr ""
 msgid "Important dates"
 msgstr ""
 
-#: users/models.py:167
+#: users/models.py:170
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:175
+#: users/models.py:178
 msgid "Group"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "View"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:180
+#: users/models.py:183
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Change"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:184
+#: users/models.py:187
 msgid "Permission to delete items"
 msgstr ""
diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.mo b/InvenTree/locale/pl/LC_MESSAGES/django.mo
index 16fcd00009..89d5c273e3 100644
Binary files a/InvenTree/locale/pl/LC_MESSAGES/django.mo and b/InvenTree/locale/pl/LC_MESSAGES/django.mo differ
diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po
index 8f82a13ba3..edc3b32d2b 100644
--- a/InvenTree/locale/pl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pl/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-04-21 09:17+0000\n"
+"POT-Creation-Date: 2021-05-05 17:33+1000\n"
 "PO-Revision-Date: 2021-04-21 09:33\n"
 "Last-Translator: \n"
 "Language-Team: Polish\n"
@@ -67,35 +67,36 @@ msgstr ""
 msgid "Select Category"
 msgstr ""
 
-#: InvenTree/helpers.py:375 order/models.py:245 order/models.py:344
-#: stock/views.py:1763
-msgid "Invalid quantity provided"
-msgstr ""
-
-#: InvenTree/helpers.py:378
-msgid "Empty serial number string"
-msgstr ""
-
-#: InvenTree/helpers.py:399
+#: InvenTree/helpers.py:377
 #, python-brace-format
 msgid "Duplicate serial: {n}"
 msgstr ""
 
-#: InvenTree/helpers.py:403 InvenTree/helpers.py:406 InvenTree/helpers.py:409
+#: InvenTree/helpers.py:384 order/models.py:245 order/models.py:353
+#: stock/views.py:1763
+msgid "Invalid quantity provided"
+msgstr ""
+
+#: InvenTree/helpers.py:387
+msgid "Empty serial number string"
+msgstr ""
+
+#: InvenTree/helpers.py:409 InvenTree/helpers.py:412 InvenTree/helpers.py:415
+#: InvenTree/helpers.py:440
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:445
 #, python-brace-format
 msgid "Duplicate serial: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:422
+#: InvenTree/helpers.py:453
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:426
+#: InvenTree/helpers.py:457
 #, python-brace-format
 msgid "Number of unique serial number ({s}) must match quantity ({q})"
 msgstr ""
@@ -140,7 +141,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_base.html:72
 #: company/templates/company/supplier_part_base.html:71
 #: company/templates/company/supplier_part_detail.html:31 label/models.py:108
-#: order/models.py:101 order/templates/order/purchase_order_detail.html:168
+#: order/models.py:101 order/templates/order/purchase_order_detail.html:143
 #: part/models.py:710 part/templates/part/detail.html:54
 #: part/templates/part/set_category.html:14 report/models.py:192
 #: report/models.py:505 report/models.py:544
@@ -165,23 +166,23 @@ msgstr ""
 msgid "parent"
 msgstr ""
 
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:491
 msgid "English"
 msgstr ""
 
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:492
 msgid "French"
 msgstr ""
 
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:493
 msgid "German"
 msgstr ""
 
-#: InvenTree/settings.py:496
+#: InvenTree/settings.py:494
 msgid "Polish"
 msgstr ""
 
-#: InvenTree/settings.py:497
+#: InvenTree/settings.py:495
 msgid "Turkish"
 msgstr ""
 
@@ -375,16 +376,16 @@ msgstr ""
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1227
+#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1241
 #: build/templates/build/allocation_card.html:23
 #: build/templates/build/auto_allocate.html:17
 #: build/templates/build/build_base.html:123
 #: build/templates/build/detail.html:31 common/models.py:703
 #: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77
 #: order/forms.py:188 order/forms.py:205 order/forms.py:239 order/forms.py:261
-#: order/forms.py:278 order/models.py:593 order/models.py:784
+#: order/forms.py:278 order/models.py:603 order/models.py:794
 #: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:200
+#: order/templates/order/purchase_order_detail.html:175
 #: order/templates/order/sales_order_detail.html:70
 #: order/templates/order/sales_order_detail.html:77
 #: order/templates/order/sales_order_detail.html:159
@@ -458,7 +459,7 @@ msgid "Location of completed parts"
 msgstr ""
 
 #: build/forms.py:215 build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:59 order/models.py:445
+#: build/templates/build/detail.html:59 order/models.py:455
 #: order/templates/order/receive_parts.html:24
 #: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
 #: templates/js/barcode.js:119 templates/js/build.js:770
@@ -508,7 +509,7 @@ msgstr ""
 #: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55
 #: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183
 #: templates/InvenTree/search.html:185
-#: templates/InvenTree/settings/tabs.html:31 users/models.py:41
+#: templates/InvenTree/settings/tabs.html:31 users/models.py:43
 msgid "Build Orders"
 msgstr ""
 
@@ -516,8 +517,8 @@ msgstr ""
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:127 order/models.py:99 order/models.py:595
-#: order/templates/order/purchase_order_detail.html:195
+#: build/models.py:127 order/models.py:99 order/models.py:605
+#: order/templates/order/purchase_order_detail.html:170
 #: order/templates/order/sales_order_detail.html:219 part/models.py:2187
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197
@@ -540,10 +541,10 @@ msgstr ""
 
 #: build/models.py:152 build/templates/build/auto_allocate.html:16
 #: build/templates/build/build_base.html:118
-#: build/templates/build/detail.html:26 company/models.py:669
-#: order/models.py:637 order/models.py:669
+#: build/templates/build/detail.html:26 company/models.py:688
+#: order/models.py:647 order/models.py:679
 #: order/templates/order/order_wizard/select_parts.html:30
-#: order/templates/order/purchase_order_detail.html:156
+#: order/templates/order/purchase_order_detail.html:131
 #: order/templates/order/receive_parts.html:19
 #: order/templates/order/sales_order_detail.html:207 part/models.py:321
 #: part/models.py:1876 part/models.py:1888 part/models.py:1906
@@ -628,7 +629,7 @@ msgstr ""
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:223 order/models.py:451
+#: build/models.py:223 order/models.py:461
 msgid "Target completion date"
 msgstr ""
 
@@ -678,9 +679,9 @@ msgstr ""
 #: company/models.py:135 company/models.py:501
 #: company/templates/company/navbar.html:70
 #: company/templates/company/navbar.html:73 order/models.py:123
-#: order/models.py:597 order/templates/order/po_navbar.html:29
+#: order/models.py:607 order/templates/order/po_navbar.html:29
 #: order/templates/order/po_navbar.html:32
-#: order/templates/order/purchase_order_detail.html:234
+#: order/templates/order/purchase_order_detail.html:209
 #: order/templates/order/sales_order_detail.html:264
 #: order/templates/order/so_navbar.html:33
 #: order/templates/order/so_navbar.html:36 part/models.py:871
@@ -713,47 +714,47 @@ msgstr ""
 msgid "Completed build output"
 msgstr ""
 
-#: build/models.py:1118
+#: build/models.py:1132
 msgid "BuildItem must be unique for build, stock_item and install_into"
 msgstr ""
 
-#: build/models.py:1143
+#: build/models.py:1157
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1147
+#: build/models.py:1161
 #, python-brace-format
 msgid "Selected stock item not found in BOM for part '{p}'"
 msgstr ""
 
-#: build/models.py:1151
+#: build/models.py:1165
 #, python-brace-format
 msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
 msgstr ""
 
-#: build/models.py:1158 order/models.py:758
+#: build/models.py:1172 order/models.py:768
 msgid "StockItem is over-allocated"
 msgstr ""
 
-#: build/models.py:1162 order/models.py:761
+#: build/models.py:1176 order/models.py:771
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1166
+#: build/models.py:1180
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1206 stock/templates/stock/item_base.html:306
+#: build/models.py:1220 stock/templates/stock/item_base.html:306
 #: templates/InvenTree/search.html:183 templates/js/build.js:714
 #: templates/navbar.html:29
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1207
+#: build/models.py:1221
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1214 part/templates/part/allocation.html:18
+#: build/models.py:1228 part/templates/part/allocation.html:18
 #: part/templates/part/allocation.html:24
 #: part/templates/part/allocation.html:31
 #: part/templates/part/allocation.html:49
@@ -765,19 +766,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1215
+#: build/models.py:1229
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1228
+#: build/models.py:1242
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1236
+#: build/models.py:1250
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1237
+#: build/models.py:1251
 msgid "Destination stock item"
 msgstr ""
 
@@ -801,7 +802,7 @@ msgstr ""
 msgid "Unallocate stock"
 msgstr ""
 
-#: build/templates/build/allocate.html:26 build/views.py:308 build/views.py:794
+#: build/templates/build/allocate.html:26 build/views.py:319 build/views.py:805
 msgid "Unallocate Stock"
 msgstr ""
 
@@ -811,7 +812,7 @@ msgstr ""
 
 #: build/templates/build/allocate.html:30
 #: company/templates/company/detail_manufacturer_part.html:33
-#: company/templates/company/detail_supplier_part.html:32 order/views.py:794
+#: company/templates/company/detail_supplier_part.html:32 order/views.py:795
 #: part/templates/part/category.html:127
 msgid "Order Parts"
 msgstr ""
@@ -954,7 +955,7 @@ msgid "Progress"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:84 order/models.py:667
+#: build/templates/build/detail.html:84 order/models.py:677
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:33
 #: order/templates/order/sales_order_ship.html:25
@@ -1139,7 +1140,7 @@ msgstr ""
 msgid "Alter the quantity of stock allocated to the build output"
 msgstr ""
 
-#: build/templates/build/index.html:28 build/views.py:667
+#: build/templates/build/index.html:28 build/views.py:678
 msgid "New Build Order"
 msgstr ""
 
@@ -1226,141 +1227,145 @@ msgstr ""
 msgid "Create Build Output"
 msgstr ""
 
-#: build/views.py:173 stock/models.py:969 stock/views.py:1789
+#: build/views.py:168
+msgid "Maximum output quantity is "
+msgstr ""
+
+#: build/views.py:184 stock/models.py:969 stock/views.py:1789
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: build/views.py:182
+#: build/views.py:193
 msgid "Serial numbers required for trackable build output"
 msgstr ""
 
-#: build/views.py:248
+#: build/views.py:259
 msgid "Delete Build Output"
 msgstr ""
 
-#: build/views.py:269 build/views.py:359
+#: build/views.py:280 build/views.py:370
 msgid "Confirm unallocation of build stock"
 msgstr ""
 
-#: build/views.py:270 build/views.py:360 stock/views.py:425
+#: build/views.py:281 build/views.py:371 stock/views.py:425
 msgid "Check the confirmation box"
 msgstr ""
 
-#: build/views.py:282
+#: build/views.py:293
 msgid "Build output does not match build"
 msgstr ""
 
-#: build/views.py:284 build/views.py:485
+#: build/views.py:295 build/views.py:496
 msgid "Build output must be specified"
 msgstr ""
 
-#: build/views.py:296
+#: build/views.py:307
 msgid "Build output deleted"
 msgstr ""
 
-#: build/views.py:394
+#: build/views.py:405
 msgid "Complete Build Order"
 msgstr ""
 
-#: build/views.py:400
+#: build/views.py:411
 msgid "Build order cannot be completed - incomplete outputs remain"
 msgstr ""
 
-#: build/views.py:411
+#: build/views.py:422
 msgid "Completed build order"
 msgstr ""
 
-#: build/views.py:427
+#: build/views.py:438
 msgid "Complete Build Output"
 msgstr ""
 
-#: build/views.py:469
+#: build/views.py:480
 msgid "Invalid stock status value selected"
 msgstr ""
 
-#: build/views.py:476
+#: build/views.py:487
 msgid "Quantity to complete cannot exceed build output quantity"
 msgstr ""
 
-#: build/views.py:482
+#: build/views.py:493
 msgid "Confirm completion of incomplete build"
 msgstr ""
 
-#: build/views.py:581
+#: build/views.py:592
 msgid "Build output completed"
 msgstr ""
 
-#: build/views.py:721
+#: build/views.py:732
 msgid "Created new build"
 msgstr ""
 
-#: build/views.py:742
+#: build/views.py:753
 msgid "Edit Build Order Details"
 msgstr ""
 
-#: build/views.py:775
+#: build/views.py:786
 msgid "Edited build"
 msgstr ""
 
-#: build/views.py:784
+#: build/views.py:795
 msgid "Delete Build Order"
 msgstr ""
 
-#: build/views.py:799
+#: build/views.py:810
 msgid "Removed parts from build allocation"
 msgstr ""
 
-#: build/views.py:811
+#: build/views.py:822
 msgid "Allocate stock to build output"
 msgstr ""
 
-#: build/views.py:854
+#: build/views.py:865
 msgid "Item must be currently in stock"
 msgstr ""
 
-#: build/views.py:860
+#: build/views.py:871
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/views.py:861 templates/js/bom.js:230 templates/js/build.js:575
+#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:575
 #: templates/js/build.js:838 templates/js/build.js:1021
 msgid "Available"
 msgstr ""
 
-#: build/views.py:863
+#: build/views.py:874
 msgid "Stock item must be selected"
 msgstr ""
 
-#: build/views.py:1026
+#: build/views.py:1037
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: build/views.py:1030
+#: build/views.py:1041
 msgid "Updated Build Item"
 msgstr ""
 
-#: build/views.py:1059
+#: build/views.py:1070
 msgid "Add Build Order Attachment"
 msgstr ""
 
-#: build/views.py:1072 order/views.py:110 order/views.py:162 part/views.py:172
+#: build/views.py:1083 order/views.py:110 order/views.py:162 part/views.py:172
 #: stock/views.py:277
 msgid "Added attachment"
 msgstr ""
 
-#: build/views.py:1108 order/views.py:189 order/views.py:210
+#: build/views.py:1119 order/views.py:189 order/views.py:210
 msgid "Edit Attachment"
 msgstr ""
 
-#: build/views.py:1118 order/views.py:193 order/views.py:214
+#: build/views.py:1129 order/views.py:193 order/views.py:214
 msgid "Attachment updated"
 msgstr ""
 
-#: build/views.py:1128 order/views.py:229 order/views.py:243
+#: build/views.py:1139 order/views.py:229 order/views.py:243
 msgid "Delete Attachment"
 msgstr ""
 
-#: build/views.py:1133 order/views.py:235 order/views.py:249 stock/views.py:333
+#: build/views.py:1144 order/views.py:235 order/views.py:249 stock/views.py:333
 msgid "Deleted attachment"
 msgstr ""
 
@@ -1766,7 +1771,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_detail.html:26
 #: company/templates/company/supplier_part_base.html:101
 #: company/templates/company/supplier_part_detail.html:35
-#: order/templates/order/purchase_order_detail.html:183 part/bom.py:171
+#: order/templates/order/purchase_order_detail.html:158 part/bom.py:171
 #: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307
 msgid "MPN"
 msgstr ""
@@ -1865,7 +1870,7 @@ msgstr ""
 msgid "Base Part"
 msgstr ""
 
-#: company/models.py:312 company/models.py:463 order/views.py:1372
+#: company/models.py:312 company/models.py:463 order/views.py:1384
 msgid "Select part"
 msgstr ""
 
@@ -1905,7 +1910,7 @@ msgstr ""
 
 #: company/models.py:475 company/templates/company/supplier_part_base.html:88
 #: company/templates/company/supplier_part_detail.html:26
-#: order/templates/order/purchase_order_detail.html:174 part/bom.py:176
+#: order/templates/order/purchase_order_detail.html:149 part/bom.py:176
 #: part/bom.py:287
 msgid "SKU"
 msgstr ""
@@ -2017,7 +2022,8 @@ msgstr ""
 
 #: company/templates/company/delete.html:12
 #, python-format
-msgid "There are %(count)s parts sourced from this company.<br>\n"
+msgid ""
+"There are %(count)s parts sourced from this company.<br>\n"
 "If this supplier is deleted, these supplier part entries will also be deleted."
 msgstr ""
 
@@ -2033,7 +2039,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/detail.html:67 order/models.py:440
+#: company/templates/company/detail.html:67 order/models.py:450
 #: order/templates/order/sales_order_base.html:92 stock/models.py:415
 #: stock/models.py:416 stock/templates/stock/item_base.html:251
 #: templates/js/company.js:40 templates/js/order.js:267
@@ -2122,13 +2128,13 @@ msgstr ""
 
 #: company/templates/company/detail_supplier_part.html:21
 #: order/templates/order/order_wizard/select_parts.html:42
-#: order/templates/order/purchase_order_detail.html:75
+#: order/templates/order/purchase_order_detail.html:50
 msgid "Create new supplier part"
 msgstr ""
 
 #: company/templates/company/detail_supplier_part.html:22
 #: company/templates/company/manufacturer_part_suppliers.html:17
-#: order/templates/order/purchase_order_detail.html:74
+#: order/templates/order/purchase_order_detail.html:49
 #: part/templates/part/supplier.html:17 templates/js/stock.js:1163
 msgid "New Supplier Part"
 msgstr ""
@@ -2226,7 +2232,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_suppliers.html:22
 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44
 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22
-#: stock/views.py:1002 users/models.py:184
+#: stock/views.py:1002 users/models.py:187
 msgid "Delete"
 msgstr ""
 
@@ -2252,7 +2258,7 @@ msgstr ""
 #: stock/templates/stock/location_navbar.html:22
 #: stock/templates/stock/location_navbar.html:29
 #: templates/InvenTree/search.html:198 templates/js/stock.js:968
-#: templates/stats.html:72 templates/stats.html:81 users/models.py:40
+#: templates/stats.html:72 templates/stats.html:81 users/models.py:42
 msgid "Stock Items"
 msgstr ""
 
@@ -2266,7 +2272,7 @@ msgstr ""
 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228
 #: templates/InvenTree/search.html:345
 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:46
-#: users/models.py:43
+#: users/models.py:45
 msgid "Sales Orders"
 msgstr ""
 
@@ -2278,7 +2284,7 @@ msgstr ""
 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205
 #: templates/InvenTree/search.html:325
 #: templates/InvenTree/settings/tabs.html:34 templates/navbar.html:37
-#: users/models.py:42
+#: users/models.py:44
 msgid "Purchase Orders"
 msgstr ""
 
@@ -2357,7 +2363,7 @@ msgid "Pricing Information"
 msgstr ""
 
 #: company/templates/company/supplier_part_pricing.html:19 company/views.py:794
-#: part/templates/part/sale_prices.html:17 part/views.py:2624
+#: part/templates/part/sale_prices.html:17 part/views.py:2636
 msgid "Add Price Break"
 msgstr ""
 
@@ -2467,15 +2473,15 @@ msgstr ""
 msgid "Delete Supplier Part"
 msgstr ""
 
-#: company/views.py:799 part/views.py:2628
+#: company/views.py:799 part/views.py:2640
 msgid "Added new price break"
 msgstr ""
 
-#: company/views.py:855 part/views.py:2672
+#: company/views.py:855 part/views.py:2684
 msgid "Edit Price Break"
 msgstr ""
 
-#: company/views.py:870 part/views.py:2686
+#: company/views.py:870 part/views.py:2698
 msgid "Delete Price Break"
 msgstr ""
 
@@ -2565,7 +2571,7 @@ msgstr ""
 msgid "Enter sales order number"
 msgstr ""
 
-#: order/forms.py:145 order/models.py:452
+#: order/forms.py:145 order/models.py:462
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
@@ -2601,7 +2607,7 @@ msgstr ""
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:182 order/models.py:445
+#: order/models.py:182 order/models.py:455
 msgid "Purchase order status"
 msgstr ""
 
@@ -2642,8 +2648,8 @@ msgstr ""
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:243 order/models.py:342 part/views.py:1586
-#: stock/models.py:270 stock/models.py:953
+#: order/models.py:243 part/views.py:1586 stock/models.py:270
+#: stock/models.py:953
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -2651,120 +2657,128 @@ msgstr ""
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:337
+#: order/models.py:344
 msgid "Lines can only be received against an order marked as 'Placed'"
 msgstr ""
 
-#: order/models.py:359
+#: order/models.py:348
+msgid "Quantity must be an integer"
+msgstr ""
+
+#: order/models.py:350
+msgid "Quantity must be a positive number"
+msgstr ""
+
+#: order/models.py:369
 msgid "Received items"
 msgstr ""
 
-#: order/models.py:441
+#: order/models.py:451
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:455 templates/js/order.js:303
+#: order/models.py:465 templates/js/order.js:303
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:462
+#: order/models.py:472
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:506
+#: order/models.py:516
 msgid "SalesOrder cannot be shipped as it is not currently pending"
 msgstr ""
 
-#: order/models.py:593
+#: order/models.py:603
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:595
+#: order/models.py:605
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:597
+#: order/models.py:607
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:623 order/models.py:667
+#: order/models.py:633 order/models.py:677
 #: part/templates/part/allocation.html:17
 #: part/templates/part/allocation.html:45
 msgid "Order"
 msgstr ""
 
-#: order/models.py:624 order/templates/order/order_base.html:9
+#: order/models.py:634 order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:24
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:313 templates/js/order.js:148
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:638
+#: order/models.py:648
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:641 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:214
+#: order/models.py:651 order/templates/order/order_base.html:131
+#: order/templates/order/purchase_order_detail.html:189
 #: order/templates/order/receive_parts.html:22
 #: order/templates/order/sales_order_base.html:131
 msgid "Received"
 msgstr ""
 
-#: order/models.py:641
+#: order/models.py:651
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:648 stock/models.py:508
+#: order/models.py:658 stock/models.py:508
 #: stock/templates/stock/item_base.html:320
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:649
+#: order/models.py:659
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:743 order/models.py:745
+#: order/models.py:753 order/models.py:755
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:749
+#: order/models.py:759
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:751
+#: order/models.py:761
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:754
+#: order/models.py:764
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:764
+#: order/models.py:774
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:769
+#: order/models.py:779
 msgid "Line"
 msgstr ""
 
-#: order/models.py:780
+#: order/models.py:790
 msgid "Item"
 msgstr ""
 
-#: order/models.py:781
+#: order/models.py:791
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:784
+#: order/models.py:794
 msgid "Enter stock allocation quantity"
 msgstr ""
 
@@ -2812,9 +2826,22 @@ msgstr ""
 msgid "Issued"
 msgstr ""
 
-#: order/templates/order/order_cancel.html:7
-#: order/templates/order/sales_order_cancel.html:9
-msgid "Cancelling this order means that the order will no longer be editable."
+#: order/templates/order/order_base.html:180
+#: order/templates/order/purchase_order_detail.html:100
+#: part/templates/part/category.html:185 part/templates/part/category.html:227
+#: stock/templates/stock/location.html:191 templates/js/stock.js:708
+#: templates/js/stock.js:1169
+msgid "New Location"
+msgstr ""
+
+#: order/templates/order/order_base.html:181
+#: order/templates/order/purchase_order_detail.html:101
+#: stock/templates/stock/location.html:42
+msgid "Create new stock location"
+msgstr ""
+
+#: order/templates/order/order_cancel.html:8
+msgid "Cancelling this order means that the order and line items will no longer be editable."
 msgstr ""
 
 #: order/templates/order/order_complete.html:7
@@ -2826,10 +2853,10 @@ msgid "This order has line items which have not been marked as received."
 msgstr ""
 
 #: order/templates/order/order_complete.html:11
-msgid "Marking this order as complete will remove these line items."
+msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: order/templates/order/order_issue.html:7
+#: order/templates/order/order_issue.html:8
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
@@ -2881,11 +2908,13 @@ msgid "Select Purchase Order"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_pos.html:45
-msgid "Create new purchase order for {{ supplier.name }}"
+#, python-format
+msgid "Create new purchase order for %(name)s"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_pos.html:68
-msgid "Select a purchase order for"
+#, python-format
+msgid "Select a purchase order for %(name)s"
 msgstr ""
 
 #: order/templates/order/po_attachments.html:12
@@ -2907,43 +2936,29 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py:1108
-#: order/views.py:1191
+#: order/templates/order/sales_order_detail.html:22 order/views.py:1120
+#: order/views.py:1203
 msgid "Add Line Item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:45
-#: order/templates/order/purchase_order_detail.html:125
-#: part/templates/part/category.html:185 part/templates/part/category.html:227
-#: stock/templates/stock/location.html:191 templates/js/stock.js:708
-#: templates/js/stock.js:1169
-msgid "New Location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:46
-#: order/templates/order/purchase_order_detail.html:126
-#: stock/templates/stock/location.html:42
-msgid "Create new stock location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:139
+#: order/templates/order/purchase_order_detail.html:114
 msgid "No line items found"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:205
+#: order/templates/order/purchase_order_detail.html:180
 msgid "Unit Price"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:246
+#: order/templates/order/purchase_order_detail.html:221
 #: order/templates/order/sales_order_detail.html:294
 msgid "Edit line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:247
+#: order/templates/order/purchase_order_detail.html:222
 msgid "Delete line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:252
+#: order/templates/order/purchase_order_detail.html:227
 msgid "Receive line item"
 msgstr ""
 
@@ -2966,7 +2981,7 @@ msgstr ""
 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114
 #: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:577
 #: templates/navbar.html:23 templates/stats.html:59 templates/stats.html:68
-#: users/models.py:38
+#: users/models.py:40
 msgid "Parts"
 msgstr ""
 
@@ -3019,6 +3034,10 @@ msgstr ""
 msgid "Warning"
 msgstr ""
 
+#: order/templates/order/sales_order_cancel.html:9
+msgid "Cancelling this order means that the order will no longer be editable."
+msgstr ""
+
 #: order/templates/order/sales_order_detail.html:13
 msgid "Sales Order Items"
 msgstr ""
@@ -3213,65 +3232,65 @@ msgstr ""
 msgid "No lines specified"
 msgstr ""
 
-#: order/views.py:1060
+#: order/views.py:1069
 #, python-brace-format
 msgid "Ordered {n} parts"
 msgstr ""
 
-#: order/views.py:1117
+#: order/views.py:1129
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/views.py:1123
+#: order/views.py:1135
 msgid "Supplier must match for Part and Order"
 msgstr ""
 
-#: order/views.py:1242 order/views.py:1260
+#: order/views.py:1254 order/views.py:1272
 msgid "Edit Line Item"
 msgstr ""
 
-#: order/views.py:1276 order/views.py:1288
+#: order/views.py:1288 order/views.py:1300
 msgid "Delete Line Item"
 msgstr ""
 
-#: order/views.py:1281 order/views.py:1293
+#: order/views.py:1293 order/views.py:1305
 msgid "Deleted line item"
 msgstr ""
 
-#: order/views.py:1306
+#: order/views.py:1318
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: order/views.py:1351
+#: order/views.py:1363
 #, python-brace-format
 msgid "Allocated {n} items"
 msgstr ""
 
-#: order/views.py:1367
+#: order/views.py:1379
 msgid "Select line item"
 msgstr ""
 
-#: order/views.py:1398
+#: order/views.py:1410
 msgid "No matching item for serial"
 msgstr ""
 
-#: order/views.py:1408
+#: order/views.py:1420
 msgid "is not in stock"
 msgstr ""
 
-#: order/views.py:1416
+#: order/views.py:1428
 msgid "already allocated to an order"
 msgstr ""
 
-#: order/views.py:1470
+#: order/views.py:1482
 msgid "Allocate Stock to Order"
 msgstr ""
 
-#: order/views.py:1544
+#: order/views.py:1556
 msgid "Edit Allocation Quantity"
 msgstr ""
 
-#: order/views.py:1559
+#: order/views.py:1571
 msgid "Remove allocation"
 msgstr ""
 
@@ -3457,7 +3476,7 @@ msgstr ""
 #: part/models.py:83 part/templates/part/category.html:23
 #: part/templates/part/category.html:94 part/templates/part/category.html:141
 #: templates/InvenTree/search.html:127 templates/stats.html:63
-#: users/models.py:37
+#: users/models.py:39
 msgid "Part Categories"
 msgstr ""
 
@@ -4004,7 +4023,7 @@ msgstr ""
 msgid "All parts"
 msgstr ""
 
-#: part/templates/part/category.html:29 part/views.py:2270
+#: part/templates/part/category.html:29 part/views.py:2282
 msgid "Create new part category"
 msgstr ""
 
@@ -4694,63 +4713,63 @@ msgstr ""
 msgid "Part Pricing"
 msgstr ""
 
-#: part/views.py:2069
+#: part/views.py:2081
 msgid "Create Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2079
+#: part/views.py:2091
 msgid "Edit Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2086
+#: part/views.py:2098
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2094
+#: part/views.py:2106
 msgid "Create Part Parameter"
 msgstr ""
 
-#: part/views.py:2144
+#: part/views.py:2156
 msgid "Edit Part Parameter"
 msgstr ""
 
-#: part/views.py:2158
+#: part/views.py:2170
 msgid "Delete Part Parameter"
 msgstr ""
 
-#: part/views.py:2218
+#: part/views.py:2230
 msgid "Edit Part Category"
 msgstr ""
 
-#: part/views.py:2256
+#: part/views.py:2268
 msgid "Delete Part Category"
 msgstr ""
 
-#: part/views.py:2262
+#: part/views.py:2274
 msgid "Part category was deleted"
 msgstr ""
 
-#: part/views.py:2314
+#: part/views.py:2326
 msgid "Create Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2415
+#: part/views.py:2427
 msgid "Edit Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2471
+#: part/views.py:2483
 msgid "Delete Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2490
+#: part/views.py:2502
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/views.py:2560
+#: part/views.py:2572
 msgid "Edit BOM item"
 msgstr ""
 
-#: part/views.py:2616
+#: part/views.py:2628
 msgid "Confim BOM item deletion"
 msgstr ""
 
@@ -5301,15 +5320,15 @@ msgid "Stock adjustment actions"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:164
-#: stock/templates/stock/location.html:65 templates/stock_table.html:56
+#: stock/templates/stock/location.html:65 templates/stock_table.html:57
 msgid "Count stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:167 templates/stock_table.html:54
+#: stock/templates/stock/item_base.html:167 templates/stock_table.html:55
 msgid "Add stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:170 templates/stock_table.html:55
+#: stock/templates/stock/item_base.html:170 templates/stock_table.html:56
 msgid "Remove stock"
 msgstr ""
 
@@ -5503,7 +5522,7 @@ msgid "Stock Details"
 msgstr ""
 
 #: stock/templates/stock/location.html:117 templates/InvenTree/search.html:279
-#: templates/stats.html:76 users/models.py:39
+#: templates/stats.html:76 users/models.py:41
 msgid "Stock Locations"
 msgstr ""
 
@@ -5689,7 +5708,7 @@ msgstr ""
 msgid "Add Stock Items"
 msgstr ""
 
-#: stock/views.py:1001 users/models.py:180
+#: stock/views.py:1001 users/models.py:183
 msgid "Add"
 msgstr ""
 
@@ -5867,6 +5886,31 @@ msgstr ""
 msgid "No stock location set"
 msgstr ""
 
+#: templates/InvenTree/settings/appearance.html:10
+msgid "Theme Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:17
+msgid "Color Themes"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:29
+#, python-format
+msgid ""
+"\n"
+"        The CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
+"        Please select another color theme :)\n"
+"    "
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:39
+msgid "Language"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:61
+msgid "Set Language"
+msgstr ""
+
 #: templates/InvenTree/settings/build.html:10
 msgid "Build Order Settings"
 msgstr ""
@@ -5950,7 +5994,7 @@ msgstr ""
 msgid "Stock Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:49
+#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:50
 msgid "Stock Options"
 msgstr ""
 
@@ -5964,7 +6008,7 @@ msgid "Account"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:9
-msgid "Theme"
+msgid "Appearance"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:13
@@ -5983,22 +6027,6 @@ msgstr ""
 msgid "Categories"
 msgstr ""
 
-#: templates/InvenTree/settings/theme.html:10
-msgid "Theme Settings"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:17
-msgid "Color Themes"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:29
-#, python-format
-msgid "\n"
-"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
-"\t\tPlease select another color theme :)\n"
-"\t"
-msgstr ""
-
 #: templates/InvenTree/settings/user.html:16
 msgid "User Information"
 msgstr ""
@@ -6061,13 +6089,23 @@ msgid "View Code on GitHub"
 msgstr ""
 
 #: templates/about.html:63
-msgid "Get the App"
+msgid "Credits"
 msgstr ""
 
 #: templates/about.html:68
+msgid "Mobile App"
+msgstr ""
+
+#: templates/about.html:73
 msgid "Submit Bug Report"
 msgstr ""
 
+#: templates/about.html:82 templates/js/modals.js:550
+#: templates/js/modals.js:809 templates/modals.html:28 templates/modals.html:52
+#: templates/modals.html:93
+msgid "Close"
+msgstr ""
+
 #: templates/attachment_table.html:6
 msgid "Add Attachment"
 msgstr ""
@@ -6263,7 +6301,7 @@ msgid "Quantity Per"
 msgstr ""
 
 #: templates/js/build.js:638 templates/js/build.js:1056
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order stock"
 msgstr ""
 
@@ -6396,11 +6434,6 @@ msgstr ""
 msgid "Submit"
 msgstr ""
 
-#: templates/js/modals.js:550 templates/js/modals.js:809
-#: templates/modals.html:28 templates/modals.html:52 templates/modals.html:93
-msgid "Close"
-msgstr ""
-
 #: templates/js/modals.js:760
 msgid "Invalid response from server"
 msgstr ""
@@ -6974,6 +7007,10 @@ msgstr ""
 msgid "Form errors exist"
 msgstr ""
 
+#: templates/navbar.html:13
+msgid "Toggle navigation"
+msgstr ""
+
 #: templates/navbar.html:33
 msgid "Buy"
 msgstr ""
@@ -6986,7 +7023,7 @@ msgstr ""
 msgid "Scan Barcode"
 msgstr ""
 
-#: templates/navbar.html:77 users/models.py:36
+#: templates/navbar.html:77 users/models.py:38
 msgid "Admin"
 msgstr ""
 
@@ -7118,43 +7155,43 @@ msgstr ""
 msgid "Print test reports"
 msgstr ""
 
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
 msgid "Add to selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:55
+#: templates/stock_table.html:56
 msgid "Remove from selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:56
+#: templates/stock_table.html:57
 msgid "Stocktake selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move stock"
 msgstr ""
 
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order selected items"
 msgstr ""
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change status"
 msgstr ""
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change stock status"
 msgstr ""
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete selected items"
 msgstr ""
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete Stock"
 msgstr ""
 
@@ -7190,34 +7227,34 @@ msgstr ""
 msgid "Important dates"
 msgstr ""
 
-#: users/models.py:167
+#: users/models.py:170
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:175
+#: users/models.py:178
 msgid "Group"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "View"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:180
+#: users/models.py:183
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Change"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:184
+#: users/models.py:187
 msgid "Permission to delete items"
 msgstr ""
diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.mo b/InvenTree/locale/ru/LC_MESSAGES/django.mo
index 7007a3d4e5..45a221f872 100644
Binary files a/InvenTree/locale/ru/LC_MESSAGES/django.mo and b/InvenTree/locale/ru/LC_MESSAGES/django.mo differ
diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po
index e77638edc6..d14c214d50 100644
--- a/InvenTree/locale/ru/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ru/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-04-21 09:17+0000\n"
+"POT-Creation-Date: 2021-05-05 17:33+1000\n"
 "PO-Revision-Date: 2021-04-21 09:33\n"
 "Last-Translator: \n"
 "Language-Team: Russian\n"
@@ -67,35 +67,36 @@ msgstr ""
 msgid "Select Category"
 msgstr ""
 
-#: InvenTree/helpers.py:375 order/models.py:245 order/models.py:344
-#: stock/views.py:1763
-msgid "Invalid quantity provided"
-msgstr ""
-
-#: InvenTree/helpers.py:378
-msgid "Empty serial number string"
-msgstr ""
-
-#: InvenTree/helpers.py:399
+#: InvenTree/helpers.py:377
 #, python-brace-format
 msgid "Duplicate serial: {n}"
 msgstr ""
 
-#: InvenTree/helpers.py:403 InvenTree/helpers.py:406 InvenTree/helpers.py:409
+#: InvenTree/helpers.py:384 order/models.py:245 order/models.py:353
+#: stock/views.py:1763
+msgid "Invalid quantity provided"
+msgstr ""
+
+#: InvenTree/helpers.py:387
+msgid "Empty serial number string"
+msgstr ""
+
+#: InvenTree/helpers.py:409 InvenTree/helpers.py:412 InvenTree/helpers.py:415
+#: InvenTree/helpers.py:440
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:445
 #, python-brace-format
 msgid "Duplicate serial: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:422
+#: InvenTree/helpers.py:453
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:426
+#: InvenTree/helpers.py:457
 #, python-brace-format
 msgid "Number of unique serial number ({s}) must match quantity ({q})"
 msgstr ""
@@ -140,7 +141,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_base.html:72
 #: company/templates/company/supplier_part_base.html:71
 #: company/templates/company/supplier_part_detail.html:31 label/models.py:108
-#: order/models.py:101 order/templates/order/purchase_order_detail.html:168
+#: order/models.py:101 order/templates/order/purchase_order_detail.html:143
 #: part/models.py:710 part/templates/part/detail.html:54
 #: part/templates/part/set_category.html:14 report/models.py:192
 #: report/models.py:505 report/models.py:544
@@ -165,23 +166,23 @@ msgstr ""
 msgid "parent"
 msgstr ""
 
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:491
 msgid "English"
 msgstr ""
 
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:492
 msgid "French"
 msgstr ""
 
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:493
 msgid "German"
 msgstr ""
 
-#: InvenTree/settings.py:496
+#: InvenTree/settings.py:494
 msgid "Polish"
 msgstr ""
 
-#: InvenTree/settings.py:497
+#: InvenTree/settings.py:495
 msgid "Turkish"
 msgstr ""
 
@@ -375,16 +376,16 @@ msgstr ""
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1227
+#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1241
 #: build/templates/build/allocation_card.html:23
 #: build/templates/build/auto_allocate.html:17
 #: build/templates/build/build_base.html:123
 #: build/templates/build/detail.html:31 common/models.py:703
 #: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77
 #: order/forms.py:188 order/forms.py:205 order/forms.py:239 order/forms.py:261
-#: order/forms.py:278 order/models.py:593 order/models.py:784
+#: order/forms.py:278 order/models.py:603 order/models.py:794
 #: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:200
+#: order/templates/order/purchase_order_detail.html:175
 #: order/templates/order/sales_order_detail.html:70
 #: order/templates/order/sales_order_detail.html:77
 #: order/templates/order/sales_order_detail.html:159
@@ -458,7 +459,7 @@ msgid "Location of completed parts"
 msgstr ""
 
 #: build/forms.py:215 build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:59 order/models.py:445
+#: build/templates/build/detail.html:59 order/models.py:455
 #: order/templates/order/receive_parts.html:24
 #: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
 #: templates/js/barcode.js:119 templates/js/build.js:770
@@ -508,7 +509,7 @@ msgstr ""
 #: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55
 #: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183
 #: templates/InvenTree/search.html:185
-#: templates/InvenTree/settings/tabs.html:31 users/models.py:41
+#: templates/InvenTree/settings/tabs.html:31 users/models.py:43
 msgid "Build Orders"
 msgstr ""
 
@@ -516,8 +517,8 @@ msgstr ""
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:127 order/models.py:99 order/models.py:595
-#: order/templates/order/purchase_order_detail.html:195
+#: build/models.py:127 order/models.py:99 order/models.py:605
+#: order/templates/order/purchase_order_detail.html:170
 #: order/templates/order/sales_order_detail.html:219 part/models.py:2187
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197
@@ -540,10 +541,10 @@ msgstr ""
 
 #: build/models.py:152 build/templates/build/auto_allocate.html:16
 #: build/templates/build/build_base.html:118
-#: build/templates/build/detail.html:26 company/models.py:669
-#: order/models.py:637 order/models.py:669
+#: build/templates/build/detail.html:26 company/models.py:688
+#: order/models.py:647 order/models.py:679
 #: order/templates/order/order_wizard/select_parts.html:30
-#: order/templates/order/purchase_order_detail.html:156
+#: order/templates/order/purchase_order_detail.html:131
 #: order/templates/order/receive_parts.html:19
 #: order/templates/order/sales_order_detail.html:207 part/models.py:321
 #: part/models.py:1876 part/models.py:1888 part/models.py:1906
@@ -628,7 +629,7 @@ msgstr ""
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:223 order/models.py:451
+#: build/models.py:223 order/models.py:461
 msgid "Target completion date"
 msgstr ""
 
@@ -678,9 +679,9 @@ msgstr ""
 #: company/models.py:135 company/models.py:501
 #: company/templates/company/navbar.html:70
 #: company/templates/company/navbar.html:73 order/models.py:123
-#: order/models.py:597 order/templates/order/po_navbar.html:29
+#: order/models.py:607 order/templates/order/po_navbar.html:29
 #: order/templates/order/po_navbar.html:32
-#: order/templates/order/purchase_order_detail.html:234
+#: order/templates/order/purchase_order_detail.html:209
 #: order/templates/order/sales_order_detail.html:264
 #: order/templates/order/so_navbar.html:33
 #: order/templates/order/so_navbar.html:36 part/models.py:871
@@ -713,47 +714,47 @@ msgstr ""
 msgid "Completed build output"
 msgstr ""
 
-#: build/models.py:1118
+#: build/models.py:1132
 msgid "BuildItem must be unique for build, stock_item and install_into"
 msgstr ""
 
-#: build/models.py:1143
+#: build/models.py:1157
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1147
+#: build/models.py:1161
 #, python-brace-format
 msgid "Selected stock item not found in BOM for part '{p}'"
 msgstr ""
 
-#: build/models.py:1151
+#: build/models.py:1165
 #, python-brace-format
 msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
 msgstr ""
 
-#: build/models.py:1158 order/models.py:758
+#: build/models.py:1172 order/models.py:768
 msgid "StockItem is over-allocated"
 msgstr ""
 
-#: build/models.py:1162 order/models.py:761
+#: build/models.py:1176 order/models.py:771
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1166
+#: build/models.py:1180
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1206 stock/templates/stock/item_base.html:306
+#: build/models.py:1220 stock/templates/stock/item_base.html:306
 #: templates/InvenTree/search.html:183 templates/js/build.js:714
 #: templates/navbar.html:29
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1207
+#: build/models.py:1221
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1214 part/templates/part/allocation.html:18
+#: build/models.py:1228 part/templates/part/allocation.html:18
 #: part/templates/part/allocation.html:24
 #: part/templates/part/allocation.html:31
 #: part/templates/part/allocation.html:49
@@ -765,19 +766,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1215
+#: build/models.py:1229
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1228
+#: build/models.py:1242
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1236
+#: build/models.py:1250
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1237
+#: build/models.py:1251
 msgid "Destination stock item"
 msgstr ""
 
@@ -801,7 +802,7 @@ msgstr ""
 msgid "Unallocate stock"
 msgstr ""
 
-#: build/templates/build/allocate.html:26 build/views.py:308 build/views.py:794
+#: build/templates/build/allocate.html:26 build/views.py:319 build/views.py:805
 msgid "Unallocate Stock"
 msgstr ""
 
@@ -811,7 +812,7 @@ msgstr ""
 
 #: build/templates/build/allocate.html:30
 #: company/templates/company/detail_manufacturer_part.html:33
-#: company/templates/company/detail_supplier_part.html:32 order/views.py:794
+#: company/templates/company/detail_supplier_part.html:32 order/views.py:795
 #: part/templates/part/category.html:127
 msgid "Order Parts"
 msgstr ""
@@ -954,7 +955,7 @@ msgid "Progress"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:84 order/models.py:667
+#: build/templates/build/detail.html:84 order/models.py:677
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:33
 #: order/templates/order/sales_order_ship.html:25
@@ -1139,7 +1140,7 @@ msgstr ""
 msgid "Alter the quantity of stock allocated to the build output"
 msgstr ""
 
-#: build/templates/build/index.html:28 build/views.py:667
+#: build/templates/build/index.html:28 build/views.py:678
 msgid "New Build Order"
 msgstr ""
 
@@ -1226,141 +1227,145 @@ msgstr ""
 msgid "Create Build Output"
 msgstr ""
 
-#: build/views.py:173 stock/models.py:969 stock/views.py:1789
+#: build/views.py:168
+msgid "Maximum output quantity is "
+msgstr ""
+
+#: build/views.py:184 stock/models.py:969 stock/views.py:1789
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: build/views.py:182
+#: build/views.py:193
 msgid "Serial numbers required for trackable build output"
 msgstr ""
 
-#: build/views.py:248
+#: build/views.py:259
 msgid "Delete Build Output"
 msgstr ""
 
-#: build/views.py:269 build/views.py:359
+#: build/views.py:280 build/views.py:370
 msgid "Confirm unallocation of build stock"
 msgstr ""
 
-#: build/views.py:270 build/views.py:360 stock/views.py:425
+#: build/views.py:281 build/views.py:371 stock/views.py:425
 msgid "Check the confirmation box"
 msgstr ""
 
-#: build/views.py:282
+#: build/views.py:293
 msgid "Build output does not match build"
 msgstr ""
 
-#: build/views.py:284 build/views.py:485
+#: build/views.py:295 build/views.py:496
 msgid "Build output must be specified"
 msgstr ""
 
-#: build/views.py:296
+#: build/views.py:307
 msgid "Build output deleted"
 msgstr ""
 
-#: build/views.py:394
+#: build/views.py:405
 msgid "Complete Build Order"
 msgstr ""
 
-#: build/views.py:400
+#: build/views.py:411
 msgid "Build order cannot be completed - incomplete outputs remain"
 msgstr ""
 
-#: build/views.py:411
+#: build/views.py:422
 msgid "Completed build order"
 msgstr ""
 
-#: build/views.py:427
+#: build/views.py:438
 msgid "Complete Build Output"
 msgstr ""
 
-#: build/views.py:469
+#: build/views.py:480
 msgid "Invalid stock status value selected"
 msgstr ""
 
-#: build/views.py:476
+#: build/views.py:487
 msgid "Quantity to complete cannot exceed build output quantity"
 msgstr ""
 
-#: build/views.py:482
+#: build/views.py:493
 msgid "Confirm completion of incomplete build"
 msgstr ""
 
-#: build/views.py:581
+#: build/views.py:592
 msgid "Build output completed"
 msgstr ""
 
-#: build/views.py:721
+#: build/views.py:732
 msgid "Created new build"
 msgstr ""
 
-#: build/views.py:742
+#: build/views.py:753
 msgid "Edit Build Order Details"
 msgstr ""
 
-#: build/views.py:775
+#: build/views.py:786
 msgid "Edited build"
 msgstr ""
 
-#: build/views.py:784
+#: build/views.py:795
 msgid "Delete Build Order"
 msgstr ""
 
-#: build/views.py:799
+#: build/views.py:810
 msgid "Removed parts from build allocation"
 msgstr ""
 
-#: build/views.py:811
+#: build/views.py:822
 msgid "Allocate stock to build output"
 msgstr ""
 
-#: build/views.py:854
+#: build/views.py:865
 msgid "Item must be currently in stock"
 msgstr ""
 
-#: build/views.py:860
+#: build/views.py:871
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/views.py:861 templates/js/bom.js:230 templates/js/build.js:575
+#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:575
 #: templates/js/build.js:838 templates/js/build.js:1021
 msgid "Available"
 msgstr ""
 
-#: build/views.py:863
+#: build/views.py:874
 msgid "Stock item must be selected"
 msgstr ""
 
-#: build/views.py:1026
+#: build/views.py:1037
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: build/views.py:1030
+#: build/views.py:1041
 msgid "Updated Build Item"
 msgstr ""
 
-#: build/views.py:1059
+#: build/views.py:1070
 msgid "Add Build Order Attachment"
 msgstr ""
 
-#: build/views.py:1072 order/views.py:110 order/views.py:162 part/views.py:172
+#: build/views.py:1083 order/views.py:110 order/views.py:162 part/views.py:172
 #: stock/views.py:277
 msgid "Added attachment"
 msgstr ""
 
-#: build/views.py:1108 order/views.py:189 order/views.py:210
+#: build/views.py:1119 order/views.py:189 order/views.py:210
 msgid "Edit Attachment"
 msgstr ""
 
-#: build/views.py:1118 order/views.py:193 order/views.py:214
+#: build/views.py:1129 order/views.py:193 order/views.py:214
 msgid "Attachment updated"
 msgstr ""
 
-#: build/views.py:1128 order/views.py:229 order/views.py:243
+#: build/views.py:1139 order/views.py:229 order/views.py:243
 msgid "Delete Attachment"
 msgstr ""
 
-#: build/views.py:1133 order/views.py:235 order/views.py:249 stock/views.py:333
+#: build/views.py:1144 order/views.py:235 order/views.py:249 stock/views.py:333
 msgid "Deleted attachment"
 msgstr ""
 
@@ -1766,7 +1771,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_detail.html:26
 #: company/templates/company/supplier_part_base.html:101
 #: company/templates/company/supplier_part_detail.html:35
-#: order/templates/order/purchase_order_detail.html:183 part/bom.py:171
+#: order/templates/order/purchase_order_detail.html:158 part/bom.py:171
 #: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307
 msgid "MPN"
 msgstr ""
@@ -1865,7 +1870,7 @@ msgstr ""
 msgid "Base Part"
 msgstr ""
 
-#: company/models.py:312 company/models.py:463 order/views.py:1372
+#: company/models.py:312 company/models.py:463 order/views.py:1384
 msgid "Select part"
 msgstr ""
 
@@ -1905,7 +1910,7 @@ msgstr ""
 
 #: company/models.py:475 company/templates/company/supplier_part_base.html:88
 #: company/templates/company/supplier_part_detail.html:26
-#: order/templates/order/purchase_order_detail.html:174 part/bom.py:176
+#: order/templates/order/purchase_order_detail.html:149 part/bom.py:176
 #: part/bom.py:287
 msgid "SKU"
 msgstr ""
@@ -2017,7 +2022,8 @@ msgstr ""
 
 #: company/templates/company/delete.html:12
 #, python-format
-msgid "There are %(count)s parts sourced from this company.<br>\n"
+msgid ""
+"There are %(count)s parts sourced from this company.<br>\n"
 "If this supplier is deleted, these supplier part entries will also be deleted."
 msgstr ""
 
@@ -2033,7 +2039,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/detail.html:67 order/models.py:440
+#: company/templates/company/detail.html:67 order/models.py:450
 #: order/templates/order/sales_order_base.html:92 stock/models.py:415
 #: stock/models.py:416 stock/templates/stock/item_base.html:251
 #: templates/js/company.js:40 templates/js/order.js:267
@@ -2122,13 +2128,13 @@ msgstr ""
 
 #: company/templates/company/detail_supplier_part.html:21
 #: order/templates/order/order_wizard/select_parts.html:42
-#: order/templates/order/purchase_order_detail.html:75
+#: order/templates/order/purchase_order_detail.html:50
 msgid "Create new supplier part"
 msgstr ""
 
 #: company/templates/company/detail_supplier_part.html:22
 #: company/templates/company/manufacturer_part_suppliers.html:17
-#: order/templates/order/purchase_order_detail.html:74
+#: order/templates/order/purchase_order_detail.html:49
 #: part/templates/part/supplier.html:17 templates/js/stock.js:1163
 msgid "New Supplier Part"
 msgstr ""
@@ -2226,7 +2232,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_suppliers.html:22
 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44
 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22
-#: stock/views.py:1002 users/models.py:184
+#: stock/views.py:1002 users/models.py:187
 msgid "Delete"
 msgstr ""
 
@@ -2252,7 +2258,7 @@ msgstr ""
 #: stock/templates/stock/location_navbar.html:22
 #: stock/templates/stock/location_navbar.html:29
 #: templates/InvenTree/search.html:198 templates/js/stock.js:968
-#: templates/stats.html:72 templates/stats.html:81 users/models.py:40
+#: templates/stats.html:72 templates/stats.html:81 users/models.py:42
 msgid "Stock Items"
 msgstr ""
 
@@ -2266,7 +2272,7 @@ msgstr ""
 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228
 #: templates/InvenTree/search.html:345
 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:46
-#: users/models.py:43
+#: users/models.py:45
 msgid "Sales Orders"
 msgstr ""
 
@@ -2278,7 +2284,7 @@ msgstr ""
 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205
 #: templates/InvenTree/search.html:325
 #: templates/InvenTree/settings/tabs.html:34 templates/navbar.html:37
-#: users/models.py:42
+#: users/models.py:44
 msgid "Purchase Orders"
 msgstr ""
 
@@ -2357,7 +2363,7 @@ msgid "Pricing Information"
 msgstr ""
 
 #: company/templates/company/supplier_part_pricing.html:19 company/views.py:794
-#: part/templates/part/sale_prices.html:17 part/views.py:2624
+#: part/templates/part/sale_prices.html:17 part/views.py:2636
 msgid "Add Price Break"
 msgstr ""
 
@@ -2467,15 +2473,15 @@ msgstr ""
 msgid "Delete Supplier Part"
 msgstr ""
 
-#: company/views.py:799 part/views.py:2628
+#: company/views.py:799 part/views.py:2640
 msgid "Added new price break"
 msgstr ""
 
-#: company/views.py:855 part/views.py:2672
+#: company/views.py:855 part/views.py:2684
 msgid "Edit Price Break"
 msgstr ""
 
-#: company/views.py:870 part/views.py:2686
+#: company/views.py:870 part/views.py:2698
 msgid "Delete Price Break"
 msgstr ""
 
@@ -2565,7 +2571,7 @@ msgstr ""
 msgid "Enter sales order number"
 msgstr ""
 
-#: order/forms.py:145 order/models.py:452
+#: order/forms.py:145 order/models.py:462
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
@@ -2601,7 +2607,7 @@ msgstr ""
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:182 order/models.py:445
+#: order/models.py:182 order/models.py:455
 msgid "Purchase order status"
 msgstr ""
 
@@ -2642,8 +2648,8 @@ msgstr ""
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:243 order/models.py:342 part/views.py:1586
-#: stock/models.py:270 stock/models.py:953
+#: order/models.py:243 part/views.py:1586 stock/models.py:270
+#: stock/models.py:953
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -2651,120 +2657,128 @@ msgstr ""
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:337
+#: order/models.py:344
 msgid "Lines can only be received against an order marked as 'Placed'"
 msgstr ""
 
-#: order/models.py:359
+#: order/models.py:348
+msgid "Quantity must be an integer"
+msgstr ""
+
+#: order/models.py:350
+msgid "Quantity must be a positive number"
+msgstr ""
+
+#: order/models.py:369
 msgid "Received items"
 msgstr ""
 
-#: order/models.py:441
+#: order/models.py:451
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:455 templates/js/order.js:303
+#: order/models.py:465 templates/js/order.js:303
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:462
+#: order/models.py:472
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:506
+#: order/models.py:516
 msgid "SalesOrder cannot be shipped as it is not currently pending"
 msgstr ""
 
-#: order/models.py:593
+#: order/models.py:603
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:595
+#: order/models.py:605
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:597
+#: order/models.py:607
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:623 order/models.py:667
+#: order/models.py:633 order/models.py:677
 #: part/templates/part/allocation.html:17
 #: part/templates/part/allocation.html:45
 msgid "Order"
 msgstr ""
 
-#: order/models.py:624 order/templates/order/order_base.html:9
+#: order/models.py:634 order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:24
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:313 templates/js/order.js:148
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:638
+#: order/models.py:648
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:641 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:214
+#: order/models.py:651 order/templates/order/order_base.html:131
+#: order/templates/order/purchase_order_detail.html:189
 #: order/templates/order/receive_parts.html:22
 #: order/templates/order/sales_order_base.html:131
 msgid "Received"
 msgstr ""
 
-#: order/models.py:641
+#: order/models.py:651
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:648 stock/models.py:508
+#: order/models.py:658 stock/models.py:508
 #: stock/templates/stock/item_base.html:320
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:649
+#: order/models.py:659
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:743 order/models.py:745
+#: order/models.py:753 order/models.py:755
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:749
+#: order/models.py:759
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:751
+#: order/models.py:761
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:754
+#: order/models.py:764
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:764
+#: order/models.py:774
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:769
+#: order/models.py:779
 msgid "Line"
 msgstr ""
 
-#: order/models.py:780
+#: order/models.py:790
 msgid "Item"
 msgstr ""
 
-#: order/models.py:781
+#: order/models.py:791
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:784
+#: order/models.py:794
 msgid "Enter stock allocation quantity"
 msgstr ""
 
@@ -2812,9 +2826,22 @@ msgstr ""
 msgid "Issued"
 msgstr ""
 
-#: order/templates/order/order_cancel.html:7
-#: order/templates/order/sales_order_cancel.html:9
-msgid "Cancelling this order means that the order will no longer be editable."
+#: order/templates/order/order_base.html:180
+#: order/templates/order/purchase_order_detail.html:100
+#: part/templates/part/category.html:185 part/templates/part/category.html:227
+#: stock/templates/stock/location.html:191 templates/js/stock.js:708
+#: templates/js/stock.js:1169
+msgid "New Location"
+msgstr ""
+
+#: order/templates/order/order_base.html:181
+#: order/templates/order/purchase_order_detail.html:101
+#: stock/templates/stock/location.html:42
+msgid "Create new stock location"
+msgstr ""
+
+#: order/templates/order/order_cancel.html:8
+msgid "Cancelling this order means that the order and line items will no longer be editable."
 msgstr ""
 
 #: order/templates/order/order_complete.html:7
@@ -2826,10 +2853,10 @@ msgid "This order has line items which have not been marked as received."
 msgstr ""
 
 #: order/templates/order/order_complete.html:11
-msgid "Marking this order as complete will remove these line items."
+msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: order/templates/order/order_issue.html:7
+#: order/templates/order/order_issue.html:8
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
@@ -2881,11 +2908,13 @@ msgid "Select Purchase Order"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_pos.html:45
-msgid "Create new purchase order for {{ supplier.name }}"
+#, python-format
+msgid "Create new purchase order for %(name)s"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_pos.html:68
-msgid "Select a purchase order for"
+#, python-format
+msgid "Select a purchase order for %(name)s"
 msgstr ""
 
 #: order/templates/order/po_attachments.html:12
@@ -2907,43 +2936,29 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py:1108
-#: order/views.py:1191
+#: order/templates/order/sales_order_detail.html:22 order/views.py:1120
+#: order/views.py:1203
 msgid "Add Line Item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:45
-#: order/templates/order/purchase_order_detail.html:125
-#: part/templates/part/category.html:185 part/templates/part/category.html:227
-#: stock/templates/stock/location.html:191 templates/js/stock.js:708
-#: templates/js/stock.js:1169
-msgid "New Location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:46
-#: order/templates/order/purchase_order_detail.html:126
-#: stock/templates/stock/location.html:42
-msgid "Create new stock location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:139
+#: order/templates/order/purchase_order_detail.html:114
 msgid "No line items found"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:205
+#: order/templates/order/purchase_order_detail.html:180
 msgid "Unit Price"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:246
+#: order/templates/order/purchase_order_detail.html:221
 #: order/templates/order/sales_order_detail.html:294
 msgid "Edit line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:247
+#: order/templates/order/purchase_order_detail.html:222
 msgid "Delete line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:252
+#: order/templates/order/purchase_order_detail.html:227
 msgid "Receive line item"
 msgstr ""
 
@@ -2966,7 +2981,7 @@ msgstr ""
 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114
 #: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:577
 #: templates/navbar.html:23 templates/stats.html:59 templates/stats.html:68
-#: users/models.py:38
+#: users/models.py:40
 msgid "Parts"
 msgstr ""
 
@@ -3019,6 +3034,10 @@ msgstr ""
 msgid "Warning"
 msgstr ""
 
+#: order/templates/order/sales_order_cancel.html:9
+msgid "Cancelling this order means that the order will no longer be editable."
+msgstr ""
+
 #: order/templates/order/sales_order_detail.html:13
 msgid "Sales Order Items"
 msgstr ""
@@ -3213,65 +3232,65 @@ msgstr ""
 msgid "No lines specified"
 msgstr ""
 
-#: order/views.py:1060
+#: order/views.py:1069
 #, python-brace-format
 msgid "Ordered {n} parts"
 msgstr ""
 
-#: order/views.py:1117
+#: order/views.py:1129
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/views.py:1123
+#: order/views.py:1135
 msgid "Supplier must match for Part and Order"
 msgstr ""
 
-#: order/views.py:1242 order/views.py:1260
+#: order/views.py:1254 order/views.py:1272
 msgid "Edit Line Item"
 msgstr ""
 
-#: order/views.py:1276 order/views.py:1288
+#: order/views.py:1288 order/views.py:1300
 msgid "Delete Line Item"
 msgstr ""
 
-#: order/views.py:1281 order/views.py:1293
+#: order/views.py:1293 order/views.py:1305
 msgid "Deleted line item"
 msgstr ""
 
-#: order/views.py:1306
+#: order/views.py:1318
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: order/views.py:1351
+#: order/views.py:1363
 #, python-brace-format
 msgid "Allocated {n} items"
 msgstr ""
 
-#: order/views.py:1367
+#: order/views.py:1379
 msgid "Select line item"
 msgstr ""
 
-#: order/views.py:1398
+#: order/views.py:1410
 msgid "No matching item for serial"
 msgstr ""
 
-#: order/views.py:1408
+#: order/views.py:1420
 msgid "is not in stock"
 msgstr ""
 
-#: order/views.py:1416
+#: order/views.py:1428
 msgid "already allocated to an order"
 msgstr ""
 
-#: order/views.py:1470
+#: order/views.py:1482
 msgid "Allocate Stock to Order"
 msgstr ""
 
-#: order/views.py:1544
+#: order/views.py:1556
 msgid "Edit Allocation Quantity"
 msgstr ""
 
-#: order/views.py:1559
+#: order/views.py:1571
 msgid "Remove allocation"
 msgstr ""
 
@@ -3457,7 +3476,7 @@ msgstr ""
 #: part/models.py:83 part/templates/part/category.html:23
 #: part/templates/part/category.html:94 part/templates/part/category.html:141
 #: templates/InvenTree/search.html:127 templates/stats.html:63
-#: users/models.py:37
+#: users/models.py:39
 msgid "Part Categories"
 msgstr ""
 
@@ -4004,7 +4023,7 @@ msgstr ""
 msgid "All parts"
 msgstr ""
 
-#: part/templates/part/category.html:29 part/views.py:2270
+#: part/templates/part/category.html:29 part/views.py:2282
 msgid "Create new part category"
 msgstr ""
 
@@ -4694,63 +4713,63 @@ msgstr ""
 msgid "Part Pricing"
 msgstr ""
 
-#: part/views.py:2069
+#: part/views.py:2081
 msgid "Create Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2079
+#: part/views.py:2091
 msgid "Edit Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2086
+#: part/views.py:2098
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2094
+#: part/views.py:2106
 msgid "Create Part Parameter"
 msgstr ""
 
-#: part/views.py:2144
+#: part/views.py:2156
 msgid "Edit Part Parameter"
 msgstr ""
 
-#: part/views.py:2158
+#: part/views.py:2170
 msgid "Delete Part Parameter"
 msgstr ""
 
-#: part/views.py:2218
+#: part/views.py:2230
 msgid "Edit Part Category"
 msgstr ""
 
-#: part/views.py:2256
+#: part/views.py:2268
 msgid "Delete Part Category"
 msgstr ""
 
-#: part/views.py:2262
+#: part/views.py:2274
 msgid "Part category was deleted"
 msgstr ""
 
-#: part/views.py:2314
+#: part/views.py:2326
 msgid "Create Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2415
+#: part/views.py:2427
 msgid "Edit Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2471
+#: part/views.py:2483
 msgid "Delete Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2490
+#: part/views.py:2502
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/views.py:2560
+#: part/views.py:2572
 msgid "Edit BOM item"
 msgstr ""
 
-#: part/views.py:2616
+#: part/views.py:2628
 msgid "Confim BOM item deletion"
 msgstr ""
 
@@ -5301,15 +5320,15 @@ msgid "Stock adjustment actions"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:164
-#: stock/templates/stock/location.html:65 templates/stock_table.html:56
+#: stock/templates/stock/location.html:65 templates/stock_table.html:57
 msgid "Count stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:167 templates/stock_table.html:54
+#: stock/templates/stock/item_base.html:167 templates/stock_table.html:55
 msgid "Add stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:170 templates/stock_table.html:55
+#: stock/templates/stock/item_base.html:170 templates/stock_table.html:56
 msgid "Remove stock"
 msgstr ""
 
@@ -5503,7 +5522,7 @@ msgid "Stock Details"
 msgstr ""
 
 #: stock/templates/stock/location.html:117 templates/InvenTree/search.html:279
-#: templates/stats.html:76 users/models.py:39
+#: templates/stats.html:76 users/models.py:41
 msgid "Stock Locations"
 msgstr ""
 
@@ -5689,7 +5708,7 @@ msgstr ""
 msgid "Add Stock Items"
 msgstr ""
 
-#: stock/views.py:1001 users/models.py:180
+#: stock/views.py:1001 users/models.py:183
 msgid "Add"
 msgstr ""
 
@@ -5867,6 +5886,31 @@ msgstr ""
 msgid "No stock location set"
 msgstr ""
 
+#: templates/InvenTree/settings/appearance.html:10
+msgid "Theme Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:17
+msgid "Color Themes"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:29
+#, python-format
+msgid ""
+"\n"
+"        The CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
+"        Please select another color theme :)\n"
+"    "
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:39
+msgid "Language"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:61
+msgid "Set Language"
+msgstr ""
+
 #: templates/InvenTree/settings/build.html:10
 msgid "Build Order Settings"
 msgstr ""
@@ -5950,7 +5994,7 @@ msgstr ""
 msgid "Stock Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:49
+#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:50
 msgid "Stock Options"
 msgstr ""
 
@@ -5964,7 +6008,7 @@ msgid "Account"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:9
-msgid "Theme"
+msgid "Appearance"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:13
@@ -5983,22 +6027,6 @@ msgstr ""
 msgid "Categories"
 msgstr ""
 
-#: templates/InvenTree/settings/theme.html:10
-msgid "Theme Settings"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:17
-msgid "Color Themes"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:29
-#, python-format
-msgid "\n"
-"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
-"\t\tPlease select another color theme :)\n"
-"\t"
-msgstr ""
-
 #: templates/InvenTree/settings/user.html:16
 msgid "User Information"
 msgstr ""
@@ -6061,13 +6089,23 @@ msgid "View Code on GitHub"
 msgstr ""
 
 #: templates/about.html:63
-msgid "Get the App"
+msgid "Credits"
 msgstr ""
 
 #: templates/about.html:68
+msgid "Mobile App"
+msgstr ""
+
+#: templates/about.html:73
 msgid "Submit Bug Report"
 msgstr ""
 
+#: templates/about.html:82 templates/js/modals.js:550
+#: templates/js/modals.js:809 templates/modals.html:28 templates/modals.html:52
+#: templates/modals.html:93
+msgid "Close"
+msgstr ""
+
 #: templates/attachment_table.html:6
 msgid "Add Attachment"
 msgstr ""
@@ -6263,7 +6301,7 @@ msgid "Quantity Per"
 msgstr ""
 
 #: templates/js/build.js:638 templates/js/build.js:1056
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order stock"
 msgstr ""
 
@@ -6396,11 +6434,6 @@ msgstr ""
 msgid "Submit"
 msgstr ""
 
-#: templates/js/modals.js:550 templates/js/modals.js:809
-#: templates/modals.html:28 templates/modals.html:52 templates/modals.html:93
-msgid "Close"
-msgstr ""
-
 #: templates/js/modals.js:760
 msgid "Invalid response from server"
 msgstr ""
@@ -6974,6 +7007,10 @@ msgstr ""
 msgid "Form errors exist"
 msgstr ""
 
+#: templates/navbar.html:13
+msgid "Toggle navigation"
+msgstr ""
+
 #: templates/navbar.html:33
 msgid "Buy"
 msgstr ""
@@ -6986,7 +7023,7 @@ msgstr ""
 msgid "Scan Barcode"
 msgstr ""
 
-#: templates/navbar.html:77 users/models.py:36
+#: templates/navbar.html:77 users/models.py:38
 msgid "Admin"
 msgstr ""
 
@@ -7118,43 +7155,43 @@ msgstr ""
 msgid "Print test reports"
 msgstr ""
 
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
 msgid "Add to selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:55
+#: templates/stock_table.html:56
 msgid "Remove from selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:56
+#: templates/stock_table.html:57
 msgid "Stocktake selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move stock"
 msgstr ""
 
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order selected items"
 msgstr ""
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change status"
 msgstr ""
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change stock status"
 msgstr ""
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete selected items"
 msgstr ""
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete Stock"
 msgstr ""
 
@@ -7190,34 +7227,34 @@ msgstr ""
 msgid "Important dates"
 msgstr ""
 
-#: users/models.py:167
+#: users/models.py:170
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:175
+#: users/models.py:178
 msgid "Group"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "View"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:180
+#: users/models.py:183
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Change"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:184
+#: users/models.py:187
 msgid "Permission to delete items"
 msgstr ""
diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po
index b8105d1fde..db257af1fe 100644
--- a/InvenTree/locale/tr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/tr/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-04-21 22:29+1000\n"
+"POT-Creation-Date: 2021-05-05 17:33+1000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -73,35 +73,36 @@ msgstr ""
 msgid "Select Category"
 msgstr ""
 
-#: InvenTree/helpers.py:375 order/models.py:245 order/models.py:344
-#: stock/views.py:1763
-msgid "Invalid quantity provided"
-msgstr ""
-
-#: InvenTree/helpers.py:378
-msgid "Empty serial number string"
-msgstr ""
-
-#: InvenTree/helpers.py:399
+#: InvenTree/helpers.py:377
 #, python-brace-format
 msgid "Duplicate serial: {n}"
 msgstr ""
 
-#: InvenTree/helpers.py:403 InvenTree/helpers.py:406 InvenTree/helpers.py:409
+#: InvenTree/helpers.py:384 order/models.py:245 order/models.py:353
+#: stock/views.py:1763
+msgid "Invalid quantity provided"
+msgstr ""
+
+#: InvenTree/helpers.py:387
+msgid "Empty serial number string"
+msgstr ""
+
+#: InvenTree/helpers.py:409 InvenTree/helpers.py:412 InvenTree/helpers.py:415
+#: InvenTree/helpers.py:440
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:445
 #, python-brace-format
 msgid "Duplicate serial: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:422
+#: InvenTree/helpers.py:453
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:426
+#: InvenTree/helpers.py:457
 #, python-brace-format
 msgid "Number of unique serial number ({s}) must match quantity ({q})"
 msgstr ""
@@ -146,7 +147,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_base.html:72
 #: company/templates/company/supplier_part_base.html:71
 #: company/templates/company/supplier_part_detail.html:31 label/models.py:108
-#: order/models.py:101 order/templates/order/purchase_order_detail.html:168
+#: order/models.py:101 order/templates/order/purchase_order_detail.html:143
 #: part/models.py:710 part/templates/part/detail.html:54
 #: part/templates/part/set_category.html:14 report/models.py:192
 #: report/models.py:505 report/models.py:544
@@ -171,23 +172,23 @@ msgstr ""
 msgid "parent"
 msgstr ""
 
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:491
 msgid "English"
 msgstr ""
 
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:492
 msgid "French"
 msgstr ""
 
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:493
 msgid "German"
 msgstr ""
 
-#: InvenTree/settings.py:496
+#: InvenTree/settings.py:494
 msgid "Polish"
 msgstr ""
 
-#: InvenTree/settings.py:497
+#: InvenTree/settings.py:495
 msgid "Turkish"
 msgstr ""
 
@@ -378,20 +379,19 @@ msgid "Target Date"
 msgstr ""
 
 #: build/forms.py:43 build/models.py:224
-msgid ""
-"Target date for build completion. Build will be overdue after this date."
+msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1227
+#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1241
 #: build/templates/build/allocation_card.html:23
 #: build/templates/build/auto_allocate.html:17
 #: build/templates/build/build_base.html:123
 #: build/templates/build/detail.html:31 common/models.py:703
 #: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77
 #: order/forms.py:188 order/forms.py:205 order/forms.py:239 order/forms.py:261
-#: order/forms.py:278 order/models.py:593 order/models.py:784
+#: order/forms.py:278 order/models.py:603 order/models.py:794
 #: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:200
+#: order/templates/order/purchase_order_detail.html:175
 #: order/templates/order/sales_order_detail.html:70
 #: order/templates/order/sales_order_detail.html:77
 #: order/templates/order/sales_order_detail.html:159
@@ -465,7 +465,7 @@ msgid "Location of completed parts"
 msgstr ""
 
 #: build/forms.py:215 build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:59 order/models.py:445
+#: build/templates/build/detail.html:59 order/models.py:455
 #: order/templates/order/receive_parts.html:24
 #: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
 #: templates/js/barcode.js:119 templates/js/build.js:770
@@ -515,7 +515,7 @@ msgstr ""
 #: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55
 #: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183
 #: templates/InvenTree/search.html:185
-#: templates/InvenTree/settings/tabs.html:31 users/models.py:41
+#: templates/InvenTree/settings/tabs.html:31 users/models.py:43
 msgid "Build Orders"
 msgstr ""
 
@@ -523,8 +523,8 @@ msgstr ""
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:127 order/models.py:99 order/models.py:595
-#: order/templates/order/purchase_order_detail.html:195
+#: build/models.py:127 order/models.py:99 order/models.py:605
+#: order/templates/order/purchase_order_detail.html:170
 #: order/templates/order/sales_order_detail.html:219 part/models.py:2187
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197
@@ -547,10 +547,10 @@ msgstr ""
 
 #: build/models.py:152 build/templates/build/auto_allocate.html:16
 #: build/templates/build/build_base.html:118
-#: build/templates/build/detail.html:26 company/models.py:669
-#: order/models.py:637 order/models.py:669
+#: build/templates/build/detail.html:26 company/models.py:688
+#: order/models.py:647 order/models.py:679
 #: order/templates/order/order_wizard/select_parts.html:30
-#: order/templates/order/purchase_order_detail.html:156
+#: order/templates/order/purchase_order_detail.html:131
 #: order/templates/order/receive_parts.html:19
 #: order/templates/order/sales_order_detail.html:207 part/models.py:321
 #: part/models.py:1876 part/models.py:1888 part/models.py:1906
@@ -587,9 +587,7 @@ msgid "Source Location"
 msgstr ""
 
 #: build/models.py:178
-msgid ""
-"Select location to take stock from for this build (leave blank to take from "
-"any stock location)"
+msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
 msgstr ""
 
 #: build/models.py:183
@@ -637,7 +635,7 @@ msgstr ""
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:223 order/models.py:451
+#: build/models.py:223 order/models.py:461
 msgid "Target completion date"
 msgstr ""
 
@@ -687,9 +685,9 @@ msgstr ""
 #: company/models.py:135 company/models.py:501
 #: company/templates/company/navbar.html:70
 #: company/templates/company/navbar.html:73 order/models.py:123
-#: order/models.py:597 order/templates/order/po_navbar.html:29
+#: order/models.py:607 order/templates/order/po_navbar.html:29
 #: order/templates/order/po_navbar.html:32
-#: order/templates/order/purchase_order_detail.html:234
+#: order/templates/order/purchase_order_detail.html:209
 #: order/templates/order/sales_order_detail.html:264
 #: order/templates/order/so_navbar.html:33
 #: order/templates/order/so_navbar.html:36 part/models.py:871
@@ -722,48 +720,47 @@ msgstr ""
 msgid "Completed build output"
 msgstr ""
 
-#: build/models.py:1118
+#: build/models.py:1132
 msgid "BuildItem must be unique for build, stock_item and install_into"
 msgstr ""
 
-#: build/models.py:1143
-msgid ""
-"Build item must specify a build output, as master part is marked as trackable"
+#: build/models.py:1157
+msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1147
+#: build/models.py:1161
 #, python-brace-format
 msgid "Selected stock item not found in BOM for part '{p}'"
 msgstr ""
 
-#: build/models.py:1151
+#: build/models.py:1165
 #, python-brace-format
 msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
 msgstr ""
 
-#: build/models.py:1158 order/models.py:758
+#: build/models.py:1172 order/models.py:768
 msgid "StockItem is over-allocated"
 msgstr ""
 
-#: build/models.py:1162 order/models.py:761
+#: build/models.py:1176 order/models.py:771
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1166
+#: build/models.py:1180
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1206 stock/templates/stock/item_base.html:306
+#: build/models.py:1220 stock/templates/stock/item_base.html:306
 #: templates/InvenTree/search.html:183 templates/js/build.js:714
 #: templates/navbar.html:29
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1207
+#: build/models.py:1221
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1214 part/templates/part/allocation.html:18
+#: build/models.py:1228 part/templates/part/allocation.html:18
 #: part/templates/part/allocation.html:24
 #: part/templates/part/allocation.html:31
 #: part/templates/part/allocation.html:49
@@ -775,19 +772,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1215
+#: build/models.py:1229
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1228
+#: build/models.py:1242
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1236
+#: build/models.py:1250
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1237
+#: build/models.py:1251
 msgid "Destination stock item"
 msgstr ""
 
@@ -811,7 +808,7 @@ msgstr ""
 msgid "Unallocate stock"
 msgstr ""
 
-#: build/templates/build/allocate.html:26 build/views.py:308 build/views.py:794
+#: build/templates/build/allocate.html:26 build/views.py:319 build/views.py:805
 msgid "Unallocate Stock"
 msgstr ""
 
@@ -821,7 +818,7 @@ msgstr ""
 
 #: build/templates/build/allocate.html:30
 #: company/templates/company/detail_manufacturer_part.html:33
-#: company/templates/company/detail_supplier_part.html:32 order/views.py:794
+#: company/templates/company/detail_supplier_part.html:32 order/views.py:795
 #: part/templates/part/category.html:127
 msgid "Order Parts"
 msgstr ""
@@ -862,8 +859,7 @@ msgid "Automatically Allocate Stock"
 msgstr ""
 
 #: build/templates/build/auto_allocate.html:10
-msgid ""
-"The following stock items will be allocated to the specified build output"
+msgid "The following stock items will be allocated to the specified build output"
 msgstr ""
 
 #: build/templates/build/auto_allocate.html:37
@@ -965,7 +961,7 @@ msgid "Progress"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:84 order/models.py:667
+#: build/templates/build/detail.html:84 order/models.py:677
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:33
 #: order/templates/order/sales_order_ship.html:25
@@ -1089,9 +1085,7 @@ msgstr ""
 
 #: build/templates/build/create_build_item.html:11
 #, python-format
-msgid ""
-"The allocated stock will be installed into the following build output:<br><i>"
-"%(output)s</i>"
+msgid "The allocated stock will be installed into the following build output:<br><i>%(output)s</i>"
 msgstr ""
 
 #: build/templates/build/create_build_item.html:17
@@ -1152,7 +1146,7 @@ msgstr ""
 msgid "Alter the quantity of stock allocated to the build output"
 msgstr ""
 
-#: build/templates/build/index.html:28 build/views.py:667
+#: build/templates/build/index.html:28 build/views.py:678
 msgid "New Build Order"
 msgstr ""
 
@@ -1239,141 +1233,145 @@ msgstr ""
 msgid "Create Build Output"
 msgstr ""
 
-#: build/views.py:173 stock/models.py:969 stock/views.py:1789
+#: build/views.py:168
+msgid "Maximum output quantity is "
+msgstr ""
+
+#: build/views.py:184 stock/models.py:969 stock/views.py:1789
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: build/views.py:182
+#: build/views.py:193
 msgid "Serial numbers required for trackable build output"
 msgstr ""
 
-#: build/views.py:248
+#: build/views.py:259
 msgid "Delete Build Output"
 msgstr ""
 
-#: build/views.py:269 build/views.py:359
+#: build/views.py:280 build/views.py:370
 msgid "Confirm unallocation of build stock"
 msgstr ""
 
-#: build/views.py:270 build/views.py:360 stock/views.py:425
+#: build/views.py:281 build/views.py:371 stock/views.py:425
 msgid "Check the confirmation box"
 msgstr ""
 
-#: build/views.py:282
+#: build/views.py:293
 msgid "Build output does not match build"
 msgstr ""
 
-#: build/views.py:284 build/views.py:485
+#: build/views.py:295 build/views.py:496
 msgid "Build output must be specified"
 msgstr ""
 
-#: build/views.py:296
+#: build/views.py:307
 msgid "Build output deleted"
 msgstr ""
 
-#: build/views.py:394
+#: build/views.py:405
 msgid "Complete Build Order"
 msgstr ""
 
-#: build/views.py:400
+#: build/views.py:411
 msgid "Build order cannot be completed - incomplete outputs remain"
 msgstr ""
 
-#: build/views.py:411
+#: build/views.py:422
 msgid "Completed build order"
 msgstr ""
 
-#: build/views.py:427
+#: build/views.py:438
 msgid "Complete Build Output"
 msgstr ""
 
-#: build/views.py:469
+#: build/views.py:480
 msgid "Invalid stock status value selected"
 msgstr ""
 
-#: build/views.py:476
+#: build/views.py:487
 msgid "Quantity to complete cannot exceed build output quantity"
 msgstr ""
 
-#: build/views.py:482
+#: build/views.py:493
 msgid "Confirm completion of incomplete build"
 msgstr ""
 
-#: build/views.py:581
+#: build/views.py:592
 msgid "Build output completed"
 msgstr ""
 
-#: build/views.py:721
+#: build/views.py:732
 msgid "Created new build"
 msgstr ""
 
-#: build/views.py:742
+#: build/views.py:753
 msgid "Edit Build Order Details"
 msgstr ""
 
-#: build/views.py:775
+#: build/views.py:786
 msgid "Edited build"
 msgstr ""
 
-#: build/views.py:784
+#: build/views.py:795
 msgid "Delete Build Order"
 msgstr ""
 
-#: build/views.py:799
+#: build/views.py:810
 msgid "Removed parts from build allocation"
 msgstr ""
 
-#: build/views.py:811
+#: build/views.py:822
 msgid "Allocate stock to build output"
 msgstr ""
 
-#: build/views.py:854
+#: build/views.py:865
 msgid "Item must be currently in stock"
 msgstr ""
 
-#: build/views.py:860
+#: build/views.py:871
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/views.py:861 templates/js/bom.js:230 templates/js/build.js:575
+#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:575
 #: templates/js/build.js:838 templates/js/build.js:1021
 msgid "Available"
 msgstr ""
 
-#: build/views.py:863
+#: build/views.py:874
 msgid "Stock item must be selected"
 msgstr ""
 
-#: build/views.py:1026
+#: build/views.py:1037
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: build/views.py:1030
+#: build/views.py:1041
 msgid "Updated Build Item"
 msgstr ""
 
-#: build/views.py:1059
+#: build/views.py:1070
 msgid "Add Build Order Attachment"
 msgstr ""
 
-#: build/views.py:1072 order/views.py:110 order/views.py:162 part/views.py:172
+#: build/views.py:1083 order/views.py:110 order/views.py:162 part/views.py:172
 #: stock/views.py:277
 msgid "Added attachment"
 msgstr ""
 
-#: build/views.py:1108 order/views.py:189 order/views.py:210
+#: build/views.py:1119 order/views.py:189 order/views.py:210
 msgid "Edit Attachment"
 msgstr ""
 
-#: build/views.py:1118 order/views.py:193 order/views.py:214
+#: build/views.py:1129 order/views.py:193 order/views.py:214
 msgid "Attachment updated"
 msgstr ""
 
-#: build/views.py:1128 order/views.py:229 order/views.py:243
+#: build/views.py:1139 order/views.py:229 order/views.py:243
 msgid "Delete Attachment"
 msgstr ""
 
-#: build/views.py:1133 order/views.py:235 order/views.py:249 stock/views.py:333
+#: build/views.py:1144 order/views.py:235 order/views.py:249 stock/views.py:333
 msgid "Deleted attachment"
 msgstr ""
 
@@ -1779,7 +1777,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_detail.html:26
 #: company/templates/company/supplier_part_base.html:101
 #: company/templates/company/supplier_part_detail.html:35
-#: order/templates/order/purchase_order_detail.html:183 part/bom.py:171
+#: order/templates/order/purchase_order_detail.html:158 part/bom.py:171
 #: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307
 msgid "MPN"
 msgstr ""
@@ -1878,7 +1876,7 @@ msgstr ""
 msgid "Base Part"
 msgstr ""
 
-#: company/models.py:312 company/models.py:463 order/views.py:1372
+#: company/models.py:312 company/models.py:463 order/views.py:1384
 msgid "Select part"
 msgstr ""
 
@@ -1918,7 +1916,7 @@ msgstr ""
 
 #: company/models.py:475 company/templates/company/supplier_part_base.html:88
 #: company/templates/company/supplier_part_detail.html:26
-#: order/templates/order/purchase_order_detail.html:174 part/bom.py:176
+#: order/templates/order/purchase_order_detail.html:149 part/bom.py:176
 #: part/bom.py:287
 msgid "SKU"
 msgstr ""
@@ -2032,8 +2030,7 @@ msgstr ""
 #, python-format
 msgid ""
 "There are %(count)s parts sourced from this company.<br>\n"
-"If this supplier is deleted, these supplier part entries will also be "
-"deleted."
+"If this supplier is deleted, these supplier part entries will also be deleted."
 msgstr ""
 
 #: company/templates/company/detail.html:21
@@ -2048,7 +2045,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/detail.html:67 order/models.py:440
+#: company/templates/company/detail.html:67 order/models.py:450
 #: order/templates/order/sales_order_base.html:92 stock/models.py:415
 #: stock/models.py:416 stock/templates/stock/item_base.html:251
 #: templates/js/company.js:40 templates/js/order.js:267
@@ -2137,13 +2134,13 @@ msgstr ""
 
 #: company/templates/company/detail_supplier_part.html:21
 #: order/templates/order/order_wizard/select_parts.html:42
-#: order/templates/order/purchase_order_detail.html:75
+#: order/templates/order/purchase_order_detail.html:50
 msgid "Create new supplier part"
 msgstr ""
 
 #: company/templates/company/detail_supplier_part.html:22
 #: company/templates/company/manufacturer_part_suppliers.html:17
-#: order/templates/order/purchase_order_detail.html:74
+#: order/templates/order/purchase_order_detail.html:49
 #: part/templates/part/supplier.html:17 templates/js/stock.js:1163
 msgid "New Supplier Part"
 msgstr ""
@@ -2197,9 +2194,7 @@ msgstr ""
 
 #: company/templates/company/manufacturer_part_delete.html:36
 #, python-format
-msgid ""
-"There are %(count)s suppliers defined for this manufacturer part. If you "
-"delete it, the following supplier parts will also be deleted:"
+msgid "There are %(count)s suppliers defined for this manufacturer part. If you delete it, the following supplier parts will also be deleted:"
 msgstr ""
 
 #: company/templates/company/manufacturer_part_navbar.html:14
@@ -2243,7 +2238,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_suppliers.html:22
 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44
 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22
-#: stock/views.py:1002 users/models.py:184
+#: stock/views.py:1002 users/models.py:187
 msgid "Delete"
 msgstr ""
 
@@ -2269,7 +2264,7 @@ msgstr ""
 #: stock/templates/stock/location_navbar.html:22
 #: stock/templates/stock/location_navbar.html:29
 #: templates/InvenTree/search.html:198 templates/js/stock.js:968
-#: templates/stats.html:72 templates/stats.html:81 users/models.py:40
+#: templates/stats.html:72 templates/stats.html:81 users/models.py:42
 msgid "Stock Items"
 msgstr ""
 
@@ -2283,7 +2278,7 @@ msgstr ""
 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228
 #: templates/InvenTree/search.html:345
 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:46
-#: users/models.py:43
+#: users/models.py:45
 msgid "Sales Orders"
 msgstr ""
 
@@ -2295,7 +2290,7 @@ msgstr ""
 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205
 #: templates/InvenTree/search.html:325
 #: templates/InvenTree/settings/tabs.html:34 templates/navbar.html:37
-#: users/models.py:42
+#: users/models.py:44
 msgid "Purchase Orders"
 msgstr ""
 
@@ -2374,7 +2369,7 @@ msgid "Pricing Information"
 msgstr ""
 
 #: company/templates/company/supplier_part_pricing.html:19 company/views.py:794
-#: part/templates/part/sale_prices.html:17 part/views.py:2624
+#: part/templates/part/sale_prices.html:17 part/views.py:2636
 msgid "Add Price Break"
 msgstr ""
 
@@ -2484,15 +2479,15 @@ msgstr ""
 msgid "Delete Supplier Part"
 msgstr ""
 
-#: company/views.py:799 part/views.py:2628
+#: company/views.py:799 part/views.py:2640
 msgid "Added new price break"
 msgstr ""
 
-#: company/views.py:855 part/views.py:2672
+#: company/views.py:855 part/views.py:2684
 msgid "Edit Price Break"
 msgstr ""
 
-#: company/views.py:870 part/views.py:2686
+#: company/views.py:870 part/views.py:2698
 msgid "Delete Price Break"
 msgstr ""
 
@@ -2582,9 +2577,8 @@ msgstr ""
 msgid "Enter sales order number"
 msgstr ""
 
-#: order/forms.py:145 order/models.py:452
-msgid ""
-"Target date for order completion. Order will be overdue after this date."
+#: order/forms.py:145 order/models.py:462
+msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
 #: order/forms.py:235
@@ -2619,7 +2613,7 @@ msgstr ""
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:182 order/models.py:445
+#: order/models.py:182 order/models.py:455
 msgid "Purchase order status"
 msgstr ""
 
@@ -2653,16 +2647,15 @@ msgid "Target Delivery Date"
 msgstr ""
 
 #: order/models.py:213
-msgid ""
-"Expected date for order delivery. Order will be overdue after this date."
+msgid "Expected date for order delivery. Order will be overdue after this date."
 msgstr ""
 
 #: order/models.py:219
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:243 order/models.py:342 part/views.py:1586
-#: stock/models.py:270 stock/models.py:953
+#: order/models.py:243 part/views.py:1586 stock/models.py:270
+#: stock/models.py:953
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -2670,120 +2663,128 @@ msgstr ""
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:337
+#: order/models.py:344
 msgid "Lines can only be received against an order marked as 'Placed'"
 msgstr ""
 
-#: order/models.py:359
+#: order/models.py:348
+msgid "Quantity must be an integer"
+msgstr ""
+
+#: order/models.py:350
+msgid "Quantity must be a positive number"
+msgstr ""
+
+#: order/models.py:369
 msgid "Received items"
 msgstr ""
 
-#: order/models.py:441
+#: order/models.py:451
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:455 templates/js/order.js:303
+#: order/models.py:465 templates/js/order.js:303
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:462
+#: order/models.py:472
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:506
+#: order/models.py:516
 msgid "SalesOrder cannot be shipped as it is not currently pending"
 msgstr ""
 
-#: order/models.py:593
+#: order/models.py:603
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:595
+#: order/models.py:605
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:597
+#: order/models.py:607
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:623 order/models.py:667
+#: order/models.py:633 order/models.py:677
 #: part/templates/part/allocation.html:17
 #: part/templates/part/allocation.html:45
 msgid "Order"
 msgstr ""
 
-#: order/models.py:624 order/templates/order/order_base.html:9
+#: order/models.py:634 order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:24
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:313 templates/js/order.js:148
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:638
+#: order/models.py:648
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:641 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:214
+#: order/models.py:651 order/templates/order/order_base.html:131
+#: order/templates/order/purchase_order_detail.html:189
 #: order/templates/order/receive_parts.html:22
 #: order/templates/order/sales_order_base.html:131
 msgid "Received"
 msgstr ""
 
-#: order/models.py:641
+#: order/models.py:651
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:648 stock/models.py:508
+#: order/models.py:658 stock/models.py:508
 #: stock/templates/stock/item_base.html:320
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:649
+#: order/models.py:659
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:743 order/models.py:745
+#: order/models.py:753 order/models.py:755
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:749
+#: order/models.py:759
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:751
+#: order/models.py:761
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:754
+#: order/models.py:764
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:764
+#: order/models.py:774
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:769
+#: order/models.py:779
 msgid "Line"
 msgstr ""
 
-#: order/models.py:780
+#: order/models.py:790
 msgid "Item"
 msgstr ""
 
-#: order/models.py:781
+#: order/models.py:791
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:784
+#: order/models.py:794
 msgid "Enter stock allocation quantity"
 msgstr ""
 
@@ -2831,9 +2832,22 @@ msgstr ""
 msgid "Issued"
 msgstr ""
 
-#: order/templates/order/order_cancel.html:7
-#: order/templates/order/sales_order_cancel.html:9
-msgid "Cancelling this order means that the order will no longer be editable."
+#: order/templates/order/order_base.html:180
+#: order/templates/order/purchase_order_detail.html:100
+#: part/templates/part/category.html:185 part/templates/part/category.html:227
+#: stock/templates/stock/location.html:191 templates/js/stock.js:708
+#: templates/js/stock.js:1169
+msgid "New Location"
+msgstr ""
+
+#: order/templates/order/order_base.html:181
+#: order/templates/order/purchase_order_detail.html:101
+#: stock/templates/stock/location.html:42
+msgid "Create new stock location"
+msgstr ""
+
+#: order/templates/order/order_cancel.html:8
+msgid "Cancelling this order means that the order and line items will no longer be editable."
 msgstr ""
 
 #: order/templates/order/order_complete.html:7
@@ -2845,12 +2859,11 @@ msgid "This order has line items which have not been marked as received."
 msgstr ""
 
 #: order/templates/order/order_complete.html:11
-msgid "Marking this order as complete will remove these line items."
+msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: order/templates/order/order_issue.html:7
-msgid ""
-"After placing this purchase order, line items will no longer be editable."
+#: order/templates/order/order_issue.html:8
+msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
 #: order/templates/order/order_notes.html:13
@@ -2929,43 +2942,29 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py:1108
-#: order/views.py:1191
+#: order/templates/order/sales_order_detail.html:22 order/views.py:1120
+#: order/views.py:1203
 msgid "Add Line Item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:45
-#: order/templates/order/purchase_order_detail.html:125
-#: part/templates/part/category.html:185 part/templates/part/category.html:227
-#: stock/templates/stock/location.html:191 templates/js/stock.js:708
-#: templates/js/stock.js:1169
-msgid "New Location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:46
-#: order/templates/order/purchase_order_detail.html:126
-#: stock/templates/stock/location.html:42
-msgid "Create new stock location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:139
+#: order/templates/order/purchase_order_detail.html:114
 msgid "No line items found"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:205
+#: order/templates/order/purchase_order_detail.html:180
 msgid "Unit Price"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:246
+#: order/templates/order/purchase_order_detail.html:221
 #: order/templates/order/sales_order_detail.html:294
 msgid "Edit line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:247
+#: order/templates/order/purchase_order_detail.html:222
 msgid "Delete line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:252
+#: order/templates/order/purchase_order_detail.html:227
 msgid "Receive line item"
 msgstr ""
 
@@ -2988,7 +2987,7 @@ msgstr ""
 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114
 #: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:577
 #: templates/navbar.html:23 templates/stats.html:59 templates/stats.html:68
-#: users/models.py:38
+#: users/models.py:40
 msgid "Parts"
 msgstr ""
 
@@ -3041,6 +3040,10 @@ msgstr ""
 msgid "Warning"
 msgstr ""
 
+#: order/templates/order/sales_order_cancel.html:9
+msgid "Cancelling this order means that the order will no longer be editable."
+msgstr ""
+
 #: order/templates/order/sales_order_detail.html:13
 msgid "Sales Order Items"
 msgstr ""
@@ -3103,9 +3106,7 @@ msgid "Sales Order Notes"
 msgstr ""
 
 #: order/templates/order/sales_order_ship.html:10
-msgid ""
-"This order has not been fully allocated. If the order is marked as shipped, "
-"it can no longer be adjusted."
+msgid "This order has not been fully allocated. If the order is marked as shipped, it can no longer be adjusted."
 msgstr ""
 
 #: order/templates/order/sales_order_ship.html:12
@@ -3237,65 +3238,65 @@ msgstr ""
 msgid "No lines specified"
 msgstr ""
 
-#: order/views.py:1060
+#: order/views.py:1069
 #, python-brace-format
 msgid "Ordered {n} parts"
 msgstr ""
 
-#: order/views.py:1117
+#: order/views.py:1129
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/views.py:1123
+#: order/views.py:1135
 msgid "Supplier must match for Part and Order"
 msgstr ""
 
-#: order/views.py:1242 order/views.py:1260
+#: order/views.py:1254 order/views.py:1272
 msgid "Edit Line Item"
 msgstr ""
 
-#: order/views.py:1276 order/views.py:1288
+#: order/views.py:1288 order/views.py:1300
 msgid "Delete Line Item"
 msgstr ""
 
-#: order/views.py:1281 order/views.py:1293
+#: order/views.py:1293 order/views.py:1305
 msgid "Deleted line item"
 msgstr ""
 
-#: order/views.py:1306
+#: order/views.py:1318
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: order/views.py:1351
+#: order/views.py:1363
 #, python-brace-format
 msgid "Allocated {n} items"
 msgstr ""
 
-#: order/views.py:1367
+#: order/views.py:1379
 msgid "Select line item"
 msgstr ""
 
-#: order/views.py:1398
+#: order/views.py:1410
 msgid "No matching item for serial"
 msgstr ""
 
-#: order/views.py:1408
+#: order/views.py:1420
 msgid "is not in stock"
 msgstr ""
 
-#: order/views.py:1416
+#: order/views.py:1428
 msgid "already allocated to an order"
 msgstr ""
 
-#: order/views.py:1470
+#: order/views.py:1482
 msgid "Allocate Stock to Order"
 msgstr ""
 
-#: order/views.py:1544
+#: order/views.py:1556
 msgid "Edit Allocation Quantity"
 msgstr ""
 
-#: order/views.py:1559
+#: order/views.py:1571
 msgid "Remove allocation"
 msgstr ""
 
@@ -3481,7 +3482,7 @@ msgstr ""
 #: part/models.py:83 part/templates/part/category.html:23
 #: part/templates/part/category.html:94 part/templates/part/category.html:141
 #: templates/InvenTree/search.html:127 templates/stats.html:63
-#: users/models.py:37
+#: users/models.py:39
 msgid "Part Categories"
 msgstr ""
 
@@ -3826,9 +3827,7 @@ msgid "Select Related Part"
 msgstr ""
 
 #: part/models.py:2440
-msgid ""
-"Error creating relationship: check that the part is not related to itself "
-"and that the relationship is unique"
+msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique"
 msgstr ""
 
 #: part/templates/part/allocation.html:11
@@ -3859,8 +3858,7 @@ msgstr ""
 
 #: part/templates/part/bom.html:21
 #, python-format
-msgid ""
-"The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
+msgid "The BOM for <i>%(part)s</i> was last checked by %(checker)s on %(check_date)s"
 msgstr ""
 
 #: part/templates/part/bom.html:25
@@ -3995,8 +3993,7 @@ msgid "Requirements for BOM upload"
 msgstr ""
 
 #: part/templates/part/bom_upload/upload_file.html:21
-msgid ""
-"The BOM file must contain the required named columns as provided in the "
+msgid "The BOM file must contain the required named columns as provided in the "
 msgstr ""
 
 #: part/templates/part/bom_upload/upload_file.html:21
@@ -4013,8 +4010,7 @@ msgstr ""
 
 #: part/templates/part/bom_validate.html:6
 #, python-format
-msgid ""
-"Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
+msgid "Confirm that the Bill of Materials (BOM) is valid for:<br><i>%(part)s</i>"
 msgstr ""
 
 #: part/templates/part/bom_validate.html:9
@@ -4033,7 +4029,7 @@ msgstr ""
 msgid "All parts"
 msgstr ""
 
-#: part/templates/part/category.html:29 part/views.py:2270
+#: part/templates/part/category.html:29 part/views.py:2282
 msgid "Create new part category"
 msgstr ""
 
@@ -4115,8 +4111,7 @@ msgid "This category contains %(count)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"
+msgid "If this category is deleted, these child categories will be moved to the"
 msgstr ""
 
 #: part/templates/part/category_delete.html:11
@@ -4134,15 +4129,11 @@ 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"
+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 category Teile"
 msgstr ""
 
 #: part/templates/part/category_navbar.html:34
@@ -4489,37 +4480,27 @@ msgstr ""
 
 #: part/templates/part/partial_delete.html:12
 #, python-format
-msgid ""
-"This part is used in BOMs for %(count)s other parts. If you delete this "
-"part, the BOMs for the following parts will be updated"
+msgid "This part is used in BOMs for %(count)s other parts. If you delete this part, the BOMs for the following parts will be updated"
 msgstr ""
 
 #: part/templates/part/partial_delete.html:22
 #, python-format
-msgid ""
-"There are %(count)s stock entries defined for this part. If you delete this "
-"part, the following stock entries will also be deleted:"
+msgid "There are %(count)s stock entries defined for this part. If you delete this part, the following stock entries will also be deleted:"
 msgstr ""
 
 #: part/templates/part/partial_delete.html:33
 #, python-format
-msgid ""
-"There are %(count)s manufacturers defined for this part. If you delete this "
-"part, the following manufacturer parts will also be deleted:"
+msgid "There are %(count)s manufacturers defined for this part. If you delete this part, the following manufacturer parts will also be deleted:"
 msgstr ""
 
 #: part/templates/part/partial_delete.html:44
 #, python-format
-msgid ""
-"There are %(count)s suppliers defined for this part. If you delete this "
-"part, the following supplier parts will also be deleted:"
+msgid "There are %(count)s suppliers defined for this part. If you delete this part, the following supplier parts will also be deleted:"
 msgstr ""
 
 #: part/templates/part/partial_delete.html:55
 #, python-format
-msgid ""
-"There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this "
-"part will permanently remove this tracking information."
+msgid "There are %(count)s unique parts tracked for '%(full_name)s'. Deleting this part will permanently remove this tracking information."
 msgstr ""
 
 #: part/templates/part/related.html:18
@@ -4738,63 +4719,63 @@ msgstr ""
 msgid "Part Pricing"
 msgstr ""
 
-#: part/views.py:2069
+#: part/views.py:2081
 msgid "Create Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2079
+#: part/views.py:2091
 msgid "Edit Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2086
+#: part/views.py:2098
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2094
+#: part/views.py:2106
 msgid "Create Part Parameter"
 msgstr ""
 
-#: part/views.py:2144
+#: part/views.py:2156
 msgid "Edit Part Parameter"
 msgstr ""
 
-#: part/views.py:2158
+#: part/views.py:2170
 msgid "Delete Part Parameter"
 msgstr ""
 
-#: part/views.py:2218
+#: part/views.py:2230
 msgid "Edit Part Category"
 msgstr ""
 
-#: part/views.py:2256
+#: part/views.py:2268
 msgid "Delete Part Category"
 msgstr ""
 
-#: part/views.py:2262
+#: part/views.py:2274
 msgid "Part category was deleted"
 msgstr ""
 
-#: part/views.py:2314
+#: part/views.py:2326
 msgid "Create Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2415
+#: part/views.py:2427
 msgid "Edit Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2471
+#: part/views.py:2483
 msgid "Delete Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2490
+#: part/views.py:2502
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/views.py:2560
+#: part/views.py:2572
 msgid "Edit BOM item"
 msgstr ""
 
-#: part/views.py:2616
+#: part/views.py:2628
 msgid "Confim BOM item deletion"
 msgstr ""
 
@@ -4942,9 +4923,7 @@ msgid "Enter unique serial numbers (or leave blank)"
 msgstr ""
 
 #: stock/forms.py:169
-msgid ""
-"Destination for serialized stock (by default, will remain in current "
-"location)"
+msgid "Destination for serialized stock (by default, will remain in current location)"
 msgstr ""
 
 #: stock/forms.py:171
@@ -5126,8 +5105,7 @@ msgid "Destination Sales Order"
 msgstr ""
 
 #: stock/models.py:476
-msgid ""
-"Expiry date for stock item. Stock will be considered expired after this date"
+msgid "Expiry date for stock item. Stock will be considered expired after this date"
 msgstr ""
 
 #: stock/models.py:489
@@ -5274,9 +5252,7 @@ msgid "Stock Item Attachments"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:24
-msgid ""
-"You are not in the list of owners of this item. This stock item cannot be "
-"edited."
+msgid "You are not in the list of owners of this item. This stock item cannot be edited."
 msgstr ""
 
 #: stock/templates/stock/item_base.html:31
@@ -5293,8 +5269,7 @@ msgstr ""
 
 #: stock/templates/stock/item_base.html:53
 #, python-format
-msgid ""
-"This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
+msgid "This stock item is allocated to Sales Order %(link)s (Quantity: %(qty)s)"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:61
@@ -5303,9 +5278,7 @@ msgid "This stock item is allocated to Build %(link)s (Quantity: %(qty)s)"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:67
-msgid ""
-"This stock item is serialized - it has a unique serial number and the "
-"quantity cannot be adjusted."
+msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
 msgstr ""
 
 #: stock/templates/stock/item_base.html:71
@@ -5313,8 +5286,7 @@ msgid "This stock item cannot be deleted as it has child items"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:75
-msgid ""
-"This stock item will be automatically deleted when all stock is depleted."
+msgid "This stock item will be automatically deleted when all stock is depleted."
 msgstr ""
 
 #: stock/templates/stock/item_base.html:95
@@ -5354,15 +5326,15 @@ msgid "Stock adjustment actions"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:164
-#: stock/templates/stock/location.html:65 templates/stock_table.html:56
+#: stock/templates/stock/location.html:65 templates/stock_table.html:57
 msgid "Count stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:167 templates/stock_table.html:54
+#: stock/templates/stock/item_base.html:167 templates/stock_table.html:55
 msgid "Add stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:170 templates/stock_table.html:55
+#: stock/templates/stock/item_base.html:170 templates/stock_table.html:56
 msgid "Remove stock"
 msgstr ""
 
@@ -5463,8 +5435,7 @@ msgstr ""
 
 #: stock/templates/stock/item_delete.html:12
 #, python-format
-msgid ""
-"This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
+msgid "This will remove <b>%(qty)s</b> units of <b>%(full_name)s</b> from stock."
 msgstr ""
 
 #: stock/templates/stock/item_install.html:7
@@ -5510,9 +5481,7 @@ msgid "Add Test Data"
 msgstr ""
 
 #: stock/templates/stock/location.html:20
-msgid ""
-"You are not in the list of owners of this location. This stock location "
-"cannot be edited."
+msgid "You are not in the list of owners of this location. This stock location cannot be edited."
 msgstr ""
 
 #: stock/templates/stock/location.html:37
@@ -5559,7 +5528,7 @@ msgid "Stock Details"
 msgstr ""
 
 #: stock/templates/stock/location.html:117 templates/InvenTree/search.html:279
-#: templates/stats.html:76 users/models.py:39
+#: templates/stats.html:76 users/models.py:41
 msgid "Stock Locations"
 msgstr ""
 
@@ -5745,7 +5714,7 @@ msgstr ""
 msgid "Add Stock Items"
 msgstr ""
 
-#: stock/views.py:1001 users/models.py:180
+#: stock/views.py:1001 users/models.py:183
 msgid "Add"
 msgstr ""
 
@@ -5923,6 +5892,31 @@ msgstr ""
 msgid "No stock location set"
 msgstr ""
 
+#: templates/InvenTree/settings/appearance.html:10
+msgid "Theme Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:17
+msgid "Color Themes"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:29
+#, python-format
+msgid ""
+"\n"
+"        The CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
+"        Please select another color theme :)\n"
+"    "
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:39
+msgid "Language"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:61
+msgid "Set Language"
+msgstr ""
+
 #: templates/InvenTree/settings/build.html:10
 msgid "Build Order Settings"
 msgstr ""
@@ -6006,7 +6000,7 @@ msgstr ""
 msgid "Stock Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:49
+#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:50
 msgid "Stock Options"
 msgstr ""
 
@@ -6020,7 +6014,7 @@ msgid "Account"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:9
-msgid "Theme"
+msgid "Appearance"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:13
@@ -6039,24 +6033,6 @@ msgstr ""
 msgid "Categories"
 msgstr ""
 
-#: templates/InvenTree/settings/theme.html:10
-msgid "Theme Settings"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:17
-msgid "Color Themes"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:29
-#, python-format
-msgid ""
-"\n"
-"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected "
-"color theme was not found.<br>\n"
-"\t\tPlease select another color theme :)\n"
-"\t"
-msgstr ""
-
 #: templates/InvenTree/settings/user.html:16
 msgid "User Information"
 msgstr ""
@@ -6119,13 +6095,23 @@ msgid "View Code on GitHub"
 msgstr ""
 
 #: templates/about.html:63
-msgid "Get the App"
+msgid "Credits"
 msgstr ""
 
 #: templates/about.html:68
+msgid "Mobile App"
+msgstr ""
+
+#: templates/about.html:73
 msgid "Submit Bug Report"
 msgstr ""
 
+#: templates/about.html:82 templates/js/modals.js:550
+#: templates/js/modals.js:809 templates/modals.html:28 templates/modals.html:52
+#: templates/modals.html:93
+msgid "Close"
+msgstr ""
+
 #: templates/attachment_table.html:6
 msgid "Add Attachment"
 msgstr ""
@@ -6203,8 +6189,7 @@ msgid "Link Barcode to Stock Item"
 msgstr ""
 
 #: templates/js/barcode.js:311
-msgid ""
-"This will remove the association between this stock item and the barcode"
+msgid "This will remove the association between this stock item and the barcode"
 msgstr ""
 
 #: templates/js/barcode.js:317
@@ -6322,7 +6307,7 @@ msgid "Quantity Per"
 msgstr ""
 
 #: templates/js/build.js:638 templates/js/build.js:1056
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order stock"
 msgstr ""
 
@@ -6455,11 +6440,6 @@ msgstr ""
 msgid "Submit"
 msgstr ""
 
-#: templates/js/modals.js:550 templates/js/modals.js:809
-#: templates/modals.html:28 templates/modals.html:52 templates/modals.html:93
-msgid "Close"
-msgstr ""
-
 #: templates/js/modals.js:760
 msgid "Invalid response from server"
 msgstr ""
@@ -7033,6 +7013,10 @@ msgstr ""
 msgid "Form errors exist"
 msgstr ""
 
+#: templates/navbar.html:13
+msgid "Toggle navigation"
+msgstr ""
+
 #: templates/navbar.html:33
 msgid "Buy"
 msgstr ""
@@ -7045,7 +7029,7 @@ msgstr ""
 msgid "Scan Barcode"
 msgstr ""
 
-#: templates/navbar.html:77 users/models.py:36
+#: templates/navbar.html:77 users/models.py:38
 msgid "Admin"
 msgstr ""
 
@@ -7106,21 +7090,15 @@ msgid "Change password"
 msgstr ""
 
 #: templates/registration/password_reset_confirm.html:61
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
+msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
 msgstr ""
 
 #: templates/registration/password_reset_done.html:52
-msgid ""
-"We've emailed you instructions for setting your password, if an account "
-"exists with the email you entered. You should receive them shortly."
+msgid "We've emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly."
 msgstr ""
 
 #: templates/registration/password_reset_done.html:55
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
+msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder."
 msgstr ""
 
 #: templates/registration/password_reset_form.html:53
@@ -7183,43 +7161,43 @@ msgstr ""
 msgid "Print test reports"
 msgstr ""
 
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
 msgid "Add to selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:55
+#: templates/stock_table.html:56
 msgid "Remove from selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:56
+#: templates/stock_table.html:57
 msgid "Stocktake selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move stock"
 msgstr ""
 
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order selected items"
 msgstr ""
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change status"
 msgstr ""
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change stock status"
 msgstr ""
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete selected items"
 msgstr ""
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete Stock"
 msgstr ""
 
@@ -7255,34 +7233,34 @@ msgstr ""
 msgid "Important dates"
 msgstr ""
 
-#: users/models.py:167
+#: users/models.py:170
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:175
+#: users/models.py:178
 msgid "Group"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "View"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:180
+#: users/models.py:183
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Change"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:184
+#: users/models.py:187
 msgid "Permission to delete items"
 msgstr ""
diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.mo b/InvenTree/locale/zh/LC_MESSAGES/django.mo
index 6c5906d1cd..d02b517fab 100644
Binary files a/InvenTree/locale/zh/LC_MESSAGES/django.mo and b/InvenTree/locale/zh/LC_MESSAGES/django.mo differ
diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po
index 2534d27c42..2075ec9326 100644
--- a/InvenTree/locale/zh/LC_MESSAGES/django.po
+++ b/InvenTree/locale/zh/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-04-21 09:17+0000\n"
+"POT-Creation-Date: 2021-05-05 17:33+1000\n"
 "PO-Revision-Date: 2021-04-21 09:33\n"
 "Last-Translator: \n"
 "Language-Team: Chinese Simplified\n"
@@ -67,35 +67,36 @@ msgstr ""
 msgid "Select Category"
 msgstr ""
 
-#: InvenTree/helpers.py:375 order/models.py:245 order/models.py:344
-#: stock/views.py:1763
-msgid "Invalid quantity provided"
-msgstr ""
-
-#: InvenTree/helpers.py:378
-msgid "Empty serial number string"
-msgstr ""
-
-#: InvenTree/helpers.py:399
+#: InvenTree/helpers.py:377
 #, python-brace-format
 msgid "Duplicate serial: {n}"
 msgstr ""
 
-#: InvenTree/helpers.py:403 InvenTree/helpers.py:406 InvenTree/helpers.py:409
+#: InvenTree/helpers.py:384 order/models.py:245 order/models.py:353
+#: stock/views.py:1763
+msgid "Invalid quantity provided"
+msgstr ""
+
+#: InvenTree/helpers.py:387
+msgid "Empty serial number string"
+msgstr ""
+
+#: InvenTree/helpers.py:409 InvenTree/helpers.py:412 InvenTree/helpers.py:415
+#: InvenTree/helpers.py:440
 #, python-brace-format
 msgid "Invalid group: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:414
+#: InvenTree/helpers.py:445
 #, python-brace-format
 msgid "Duplicate serial: {g}"
 msgstr ""
 
-#: InvenTree/helpers.py:422
+#: InvenTree/helpers.py:453
 msgid "No serial numbers found"
 msgstr ""
 
-#: InvenTree/helpers.py:426
+#: InvenTree/helpers.py:457
 #, python-brace-format
 msgid "Number of unique serial number ({s}) must match quantity ({q})"
 msgstr ""
@@ -140,7 +141,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_base.html:72
 #: company/templates/company/supplier_part_base.html:71
 #: company/templates/company/supplier_part_detail.html:31 label/models.py:108
-#: order/models.py:101 order/templates/order/purchase_order_detail.html:168
+#: order/models.py:101 order/templates/order/purchase_order_detail.html:143
 #: part/models.py:710 part/templates/part/detail.html:54
 #: part/templates/part/set_category.html:14 report/models.py:192
 #: report/models.py:505 report/models.py:544
@@ -165,23 +166,23 @@ msgstr ""
 msgid "parent"
 msgstr ""
 
-#: InvenTree/settings.py:493
+#: InvenTree/settings.py:491
 msgid "English"
 msgstr ""
 
-#: InvenTree/settings.py:494
+#: InvenTree/settings.py:492
 msgid "French"
 msgstr ""
 
-#: InvenTree/settings.py:495
+#: InvenTree/settings.py:493
 msgid "German"
 msgstr ""
 
-#: InvenTree/settings.py:496
+#: InvenTree/settings.py:494
 msgid "Polish"
 msgstr ""
 
-#: InvenTree/settings.py:497
+#: InvenTree/settings.py:495
 msgid "Turkish"
 msgstr ""
 
@@ -375,16 +376,16 @@ msgstr ""
 msgid "Target date for build completion. Build will be overdue after this date."
 msgstr ""
 
-#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1227
+#: build/forms.py:48 build/forms.py:90 build/forms.py:266 build/models.py:1241
 #: build/templates/build/allocation_card.html:23
 #: build/templates/build/auto_allocate.html:17
 #: build/templates/build/build_base.html:123
 #: build/templates/build/detail.html:31 common/models.py:703
 #: company/forms.py:176 company/templates/company/supplier_part_pricing.html:77
 #: order/forms.py:188 order/forms.py:205 order/forms.py:239 order/forms.py:261
-#: order/forms.py:278 order/models.py:593 order/models.py:784
+#: order/forms.py:278 order/models.py:603 order/models.py:794
 #: order/templates/order/order_wizard/select_parts.html:32
-#: order/templates/order/purchase_order_detail.html:200
+#: order/templates/order/purchase_order_detail.html:175
 #: order/templates/order/sales_order_detail.html:70
 #: order/templates/order/sales_order_detail.html:77
 #: order/templates/order/sales_order_detail.html:159
@@ -458,7 +459,7 @@ msgid "Location of completed parts"
 msgstr ""
 
 #: build/forms.py:215 build/templates/build/build_base.html:128
-#: build/templates/build/detail.html:59 order/models.py:445
+#: build/templates/build/detail.html:59 order/models.py:455
 #: order/templates/order/receive_parts.html:24
 #: stock/templates/stock/item_base.html:392 templates/InvenTree/search.html:252
 #: templates/js/barcode.js:119 templates/js/build.js:770
@@ -508,7 +509,7 @@ msgstr ""
 #: order/templates/order/so_navbar.html:22 part/templates/part/navbar.html:55
 #: part/templates/part/navbar.html:58 templates/InvenTree/index.html:183
 #: templates/InvenTree/search.html:185
-#: templates/InvenTree/settings/tabs.html:31 users/models.py:41
+#: templates/InvenTree/settings/tabs.html:31 users/models.py:43
 msgid "Build Orders"
 msgstr ""
 
@@ -516,8 +517,8 @@ msgstr ""
 msgid "Build Order Reference"
 msgstr ""
 
-#: build/models.py:127 order/models.py:99 order/models.py:595
-#: order/templates/order/purchase_order_detail.html:195
+#: build/models.py:127 order/models.py:99 order/models.py:605
+#: order/templates/order/purchase_order_detail.html:170
 #: order/templates/order/sales_order_detail.html:219 part/models.py:2187
 #: report/templates/report/inventree_po_report.html:92
 #: report/templates/report/inventree_so_report.html:92 templates/js/bom.js:197
@@ -540,10 +541,10 @@ msgstr ""
 
 #: build/models.py:152 build/templates/build/auto_allocate.html:16
 #: build/templates/build/build_base.html:118
-#: build/templates/build/detail.html:26 company/models.py:669
-#: order/models.py:637 order/models.py:669
+#: build/templates/build/detail.html:26 company/models.py:688
+#: order/models.py:647 order/models.py:679
 #: order/templates/order/order_wizard/select_parts.html:30
-#: order/templates/order/purchase_order_detail.html:156
+#: order/templates/order/purchase_order_detail.html:131
 #: order/templates/order/receive_parts.html:19
 #: order/templates/order/sales_order_detail.html:207 part/models.py:321
 #: part/models.py:1876 part/models.py:1888 part/models.py:1906
@@ -628,7 +629,7 @@ msgstr ""
 msgid "Creation Date"
 msgstr ""
 
-#: build/models.py:223 order/models.py:451
+#: build/models.py:223 order/models.py:461
 msgid "Target completion date"
 msgstr ""
 
@@ -678,9 +679,9 @@ msgstr ""
 #: company/models.py:135 company/models.py:501
 #: company/templates/company/navbar.html:70
 #: company/templates/company/navbar.html:73 order/models.py:123
-#: order/models.py:597 order/templates/order/po_navbar.html:29
+#: order/models.py:607 order/templates/order/po_navbar.html:29
 #: order/templates/order/po_navbar.html:32
-#: order/templates/order/purchase_order_detail.html:234
+#: order/templates/order/purchase_order_detail.html:209
 #: order/templates/order/sales_order_detail.html:264
 #: order/templates/order/so_navbar.html:33
 #: order/templates/order/so_navbar.html:36 part/models.py:871
@@ -713,47 +714,47 @@ msgstr ""
 msgid "Completed build output"
 msgstr ""
 
-#: build/models.py:1118
+#: build/models.py:1132
 msgid "BuildItem must be unique for build, stock_item and install_into"
 msgstr ""
 
-#: build/models.py:1143
+#: build/models.py:1157
 msgid "Build item must specify a build output, as master part is marked as trackable"
 msgstr ""
 
-#: build/models.py:1147
+#: build/models.py:1161
 #, python-brace-format
 msgid "Selected stock item not found in BOM for part '{p}'"
 msgstr ""
 
-#: build/models.py:1151
+#: build/models.py:1165
 #, python-brace-format
 msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
 msgstr ""
 
-#: build/models.py:1158 order/models.py:758
+#: build/models.py:1172 order/models.py:768
 msgid "StockItem is over-allocated"
 msgstr ""
 
-#: build/models.py:1162 order/models.py:761
+#: build/models.py:1176 order/models.py:771
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:1166
+#: build/models.py:1180
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1206 stock/templates/stock/item_base.html:306
+#: build/models.py:1220 stock/templates/stock/item_base.html:306
 #: templates/InvenTree/search.html:183 templates/js/build.js:714
 #: templates/navbar.html:29
 msgid "Build"
 msgstr ""
 
-#: build/models.py:1207
+#: build/models.py:1221
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1214 part/templates/part/allocation.html:18
+#: build/models.py:1228 part/templates/part/allocation.html:18
 #: part/templates/part/allocation.html:24
 #: part/templates/part/allocation.html:31
 #: part/templates/part/allocation.html:49
@@ -765,19 +766,19 @@ msgstr ""
 msgid "Stock Item"
 msgstr ""
 
-#: build/models.py:1215
+#: build/models.py:1229
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1228
+#: build/models.py:1242
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1236
+#: build/models.py:1250
 msgid "Install into"
 msgstr ""
 
-#: build/models.py:1237
+#: build/models.py:1251
 msgid "Destination stock item"
 msgstr ""
 
@@ -801,7 +802,7 @@ msgstr ""
 msgid "Unallocate stock"
 msgstr ""
 
-#: build/templates/build/allocate.html:26 build/views.py:308 build/views.py:794
+#: build/templates/build/allocate.html:26 build/views.py:319 build/views.py:805
 msgid "Unallocate Stock"
 msgstr ""
 
@@ -811,7 +812,7 @@ msgstr ""
 
 #: build/templates/build/allocate.html:30
 #: company/templates/company/detail_manufacturer_part.html:33
-#: company/templates/company/detail_supplier_part.html:32 order/views.py:794
+#: company/templates/company/detail_supplier_part.html:32 order/views.py:795
 #: part/templates/part/category.html:127
 msgid "Order Parts"
 msgstr ""
@@ -954,7 +955,7 @@ msgid "Progress"
 msgstr ""
 
 #: build/templates/build/build_base.html:160
-#: build/templates/build/detail.html:84 order/models.py:667
+#: build/templates/build/detail.html:84 order/models.py:677
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:33
 #: order/templates/order/sales_order_ship.html:25
@@ -1139,7 +1140,7 @@ msgstr ""
 msgid "Alter the quantity of stock allocated to the build output"
 msgstr ""
 
-#: build/templates/build/index.html:28 build/views.py:667
+#: build/templates/build/index.html:28 build/views.py:678
 msgid "New Build Order"
 msgstr ""
 
@@ -1226,141 +1227,145 @@ msgstr ""
 msgid "Create Build Output"
 msgstr ""
 
-#: build/views.py:173 stock/models.py:969 stock/views.py:1789
+#: build/views.py:168
+msgid "Maximum output quantity is "
+msgstr ""
+
+#: build/views.py:184 stock/models.py:969 stock/views.py:1789
 msgid "Serial numbers already exist"
 msgstr ""
 
-#: build/views.py:182
+#: build/views.py:193
 msgid "Serial numbers required for trackable build output"
 msgstr ""
 
-#: build/views.py:248
+#: build/views.py:259
 msgid "Delete Build Output"
 msgstr ""
 
-#: build/views.py:269 build/views.py:359
+#: build/views.py:280 build/views.py:370
 msgid "Confirm unallocation of build stock"
 msgstr ""
 
-#: build/views.py:270 build/views.py:360 stock/views.py:425
+#: build/views.py:281 build/views.py:371 stock/views.py:425
 msgid "Check the confirmation box"
 msgstr ""
 
-#: build/views.py:282
+#: build/views.py:293
 msgid "Build output does not match build"
 msgstr ""
 
-#: build/views.py:284 build/views.py:485
+#: build/views.py:295 build/views.py:496
 msgid "Build output must be specified"
 msgstr ""
 
-#: build/views.py:296
+#: build/views.py:307
 msgid "Build output deleted"
 msgstr ""
 
-#: build/views.py:394
+#: build/views.py:405
 msgid "Complete Build Order"
 msgstr ""
 
-#: build/views.py:400
+#: build/views.py:411
 msgid "Build order cannot be completed - incomplete outputs remain"
 msgstr ""
 
-#: build/views.py:411
+#: build/views.py:422
 msgid "Completed build order"
 msgstr ""
 
-#: build/views.py:427
+#: build/views.py:438
 msgid "Complete Build Output"
 msgstr ""
 
-#: build/views.py:469
+#: build/views.py:480
 msgid "Invalid stock status value selected"
 msgstr ""
 
-#: build/views.py:476
+#: build/views.py:487
 msgid "Quantity to complete cannot exceed build output quantity"
 msgstr ""
 
-#: build/views.py:482
+#: build/views.py:493
 msgid "Confirm completion of incomplete build"
 msgstr ""
 
-#: build/views.py:581
+#: build/views.py:592
 msgid "Build output completed"
 msgstr ""
 
-#: build/views.py:721
+#: build/views.py:732
 msgid "Created new build"
 msgstr ""
 
-#: build/views.py:742
+#: build/views.py:753
 msgid "Edit Build Order Details"
 msgstr ""
 
-#: build/views.py:775
+#: build/views.py:786
 msgid "Edited build"
 msgstr ""
 
-#: build/views.py:784
+#: build/views.py:795
 msgid "Delete Build Order"
 msgstr ""
 
-#: build/views.py:799
+#: build/views.py:810
 msgid "Removed parts from build allocation"
 msgstr ""
 
-#: build/views.py:811
+#: build/views.py:822
 msgid "Allocate stock to build output"
 msgstr ""
 
-#: build/views.py:854
+#: build/views.py:865
 msgid "Item must be currently in stock"
 msgstr ""
 
-#: build/views.py:860
+#: build/views.py:871
 msgid "Stock item is over-allocated"
 msgstr ""
 
-#: build/views.py:861 templates/js/bom.js:230 templates/js/build.js:575
+#: build/views.py:872 templates/js/bom.js:230 templates/js/build.js:575
 #: templates/js/build.js:838 templates/js/build.js:1021
 msgid "Available"
 msgstr ""
 
-#: build/views.py:863
+#: build/views.py:874
 msgid "Stock item must be selected"
 msgstr ""
 
-#: build/views.py:1026
+#: build/views.py:1037
 msgid "Edit Stock Allocation"
 msgstr ""
 
-#: build/views.py:1030
+#: build/views.py:1041
 msgid "Updated Build Item"
 msgstr ""
 
-#: build/views.py:1059
+#: build/views.py:1070
 msgid "Add Build Order Attachment"
 msgstr ""
 
-#: build/views.py:1072 order/views.py:110 order/views.py:162 part/views.py:172
+#: build/views.py:1083 order/views.py:110 order/views.py:162 part/views.py:172
 #: stock/views.py:277
 msgid "Added attachment"
 msgstr ""
 
-#: build/views.py:1108 order/views.py:189 order/views.py:210
+#: build/views.py:1119 order/views.py:189 order/views.py:210
 msgid "Edit Attachment"
 msgstr ""
 
-#: build/views.py:1118 order/views.py:193 order/views.py:214
+#: build/views.py:1129 order/views.py:193 order/views.py:214
 msgid "Attachment updated"
 msgstr ""
 
-#: build/views.py:1128 order/views.py:229 order/views.py:243
+#: build/views.py:1139 order/views.py:229 order/views.py:243
 msgid "Delete Attachment"
 msgstr ""
 
-#: build/views.py:1133 order/views.py:235 order/views.py:249 stock/views.py:333
+#: build/views.py:1144 order/views.py:235 order/views.py:249 stock/views.py:333
 msgid "Deleted attachment"
 msgstr ""
 
@@ -1766,7 +1771,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_detail.html:26
 #: company/templates/company/supplier_part_base.html:101
 #: company/templates/company/supplier_part_detail.html:35
-#: order/templates/order/purchase_order_detail.html:183 part/bom.py:171
+#: order/templates/order/purchase_order_detail.html:158 part/bom.py:171
 #: part/bom.py:242 templates/js/company.js:181 templates/js/company.js:307
 msgid "MPN"
 msgstr ""
@@ -1865,7 +1870,7 @@ msgstr ""
 msgid "Base Part"
 msgstr ""
 
-#: company/models.py:312 company/models.py:463 order/views.py:1372
+#: company/models.py:312 company/models.py:463 order/views.py:1384
 msgid "Select part"
 msgstr ""
 
@@ -1905,7 +1910,7 @@ msgstr ""
 
 #: company/models.py:475 company/templates/company/supplier_part_base.html:88
 #: company/templates/company/supplier_part_detail.html:26
-#: order/templates/order/purchase_order_detail.html:174 part/bom.py:176
+#: order/templates/order/purchase_order_detail.html:149 part/bom.py:176
 #: part/bom.py:287
 msgid "SKU"
 msgstr ""
@@ -2017,7 +2022,8 @@ msgstr ""
 
 #: company/templates/company/delete.html:12
 #, python-format
-msgid "There are %(count)s parts sourced from this company.<br>\n"
+msgid ""
+"There are %(count)s parts sourced from this company.<br>\n"
 "If this supplier is deleted, these supplier part entries will also be deleted."
 msgstr ""
 
@@ -2033,7 +2039,7 @@ msgstr ""
 msgid "Uses default currency"
 msgstr ""
 
-#: company/templates/company/detail.html:67 order/models.py:440
+#: company/templates/company/detail.html:67 order/models.py:450
 #: order/templates/order/sales_order_base.html:92 stock/models.py:415
 #: stock/models.py:416 stock/templates/stock/item_base.html:251
 #: templates/js/company.js:40 templates/js/order.js:267
@@ -2122,13 +2128,13 @@ msgstr ""
 
 #: company/templates/company/detail_supplier_part.html:21
 #: order/templates/order/order_wizard/select_parts.html:42
-#: order/templates/order/purchase_order_detail.html:75
+#: order/templates/order/purchase_order_detail.html:50
 msgid "Create new supplier part"
 msgstr ""
 
 #: company/templates/company/detail_supplier_part.html:22
 #: company/templates/company/manufacturer_part_suppliers.html:17
-#: order/templates/order/purchase_order_detail.html:74
+#: order/templates/order/purchase_order_detail.html:49
 #: part/templates/part/supplier.html:17 templates/js/stock.js:1163
 msgid "New Supplier Part"
 msgstr ""
@@ -2226,7 +2232,7 @@ msgstr ""
 #: company/templates/company/manufacturer_part_suppliers.html:22
 #: part/templates/part/manufacturer.html:24 part/templates/part/params.html:44
 #: part/templates/part/related.html:44 part/templates/part/supplier.html:22
-#: stock/views.py:1002 users/models.py:184
+#: stock/views.py:1002 users/models.py:187
 msgid "Delete"
 msgstr ""
 
@@ -2252,7 +2258,7 @@ msgstr ""
 #: stock/templates/stock/location_navbar.html:22
 #: stock/templates/stock/location_navbar.html:29
 #: templates/InvenTree/search.html:198 templates/js/stock.js:968
-#: templates/stats.html:72 templates/stats.html:81 users/models.py:40
+#: templates/stats.html:72 templates/stats.html:81 users/models.py:42
 msgid "Stock Items"
 msgstr ""
 
@@ -2266,7 +2272,7 @@ msgstr ""
 #: part/templates/part/sales_orders.html:10 templates/InvenTree/index.html:228
 #: templates/InvenTree/search.html:345
 #: templates/InvenTree/settings/tabs.html:37 templates/navbar.html:46
-#: users/models.py:43
+#: users/models.py:45
 msgid "Sales Orders"
 msgstr ""
 
@@ -2278,7 +2284,7 @@ msgstr ""
 #: part/templates/part/orders.html:10 templates/InvenTree/index.html:205
 #: templates/InvenTree/search.html:325
 #: templates/InvenTree/settings/tabs.html:34 templates/navbar.html:37
-#: users/models.py:42
+#: users/models.py:44
 msgid "Purchase Orders"
 msgstr ""
 
@@ -2357,7 +2363,7 @@ msgid "Pricing Information"
 msgstr ""
 
 #: company/templates/company/supplier_part_pricing.html:19 company/views.py:794
-#: part/templates/part/sale_prices.html:17 part/views.py:2624
+#: part/templates/part/sale_prices.html:17 part/views.py:2636
 msgid "Add Price Break"
 msgstr ""
 
@@ -2467,15 +2473,15 @@ msgstr ""
 msgid "Delete Supplier Part"
 msgstr ""
 
-#: company/views.py:799 part/views.py:2628
+#: company/views.py:799 part/views.py:2640
 msgid "Added new price break"
 msgstr ""
 
-#: company/views.py:855 part/views.py:2672
+#: company/views.py:855 part/views.py:2684
 msgid "Edit Price Break"
 msgstr ""
 
-#: company/views.py:870 part/views.py:2686
+#: company/views.py:870 part/views.py:2698
 msgid "Delete Price Break"
 msgstr ""
 
@@ -2565,7 +2571,7 @@ msgstr ""
 msgid "Enter sales order number"
 msgstr ""
 
-#: order/forms.py:145 order/models.py:452
+#: order/forms.py:145 order/models.py:462
 msgid "Target date for order completion. Order will be overdue after this date."
 msgstr ""
 
@@ -2601,7 +2607,7 @@ msgstr ""
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:182 order/models.py:445
+#: order/models.py:182 order/models.py:455
 msgid "Purchase order status"
 msgstr ""
 
@@ -2642,8 +2648,8 @@ msgstr ""
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:243 order/models.py:342 part/views.py:1586
-#: stock/models.py:270 stock/models.py:953
+#: order/models.py:243 part/views.py:1586 stock/models.py:270
+#: stock/models.py:953
 msgid "Quantity must be greater than zero"
 msgstr ""
 
@@ -2651,120 +2657,128 @@ msgstr ""
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:337
+#: order/models.py:344
 msgid "Lines can only be received against an order marked as 'Placed'"
 msgstr ""
 
-#: order/models.py:359
+#: order/models.py:348
+msgid "Quantity must be an integer"
+msgstr ""
+
+#: order/models.py:350
+msgid "Quantity must be a positive number"
+msgstr ""
+
+#: order/models.py:369
 msgid "Received items"
 msgstr ""
 
-#: order/models.py:441
+#: order/models.py:451
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer Reference "
 msgstr ""
 
-#: order/models.py:447
+#: order/models.py:457
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:455 templates/js/order.js:303
+#: order/models.py:465 templates/js/order.js:303
 msgid "Shipment Date"
 msgstr ""
 
-#: order/models.py:462
+#: order/models.py:472
 msgid "shipped by"
 msgstr ""
 
-#: order/models.py:506
+#: order/models.py:516
 msgid "SalesOrder cannot be shipped as it is not currently pending"
 msgstr ""
 
-#: order/models.py:593
+#: order/models.py:603
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:595
+#: order/models.py:605
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:597
+#: order/models.py:607
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:623 order/models.py:667
+#: order/models.py:633 order/models.py:677
 #: part/templates/part/allocation.html:17
 #: part/templates/part/allocation.html:45
 msgid "Order"
 msgstr ""
 
-#: order/models.py:624 order/templates/order/order_base.html:9
+#: order/models.py:634 order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:24
 #: report/templates/report/inventree_po_report.html:77
 #: stock/templates/stock/item_base.html:313 templates/js/order.js:148
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:638
+#: order/models.py:648
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:641 order/templates/order/order_base.html:131
-#: order/templates/order/purchase_order_detail.html:214
+#: order/models.py:651 order/templates/order/order_base.html:131
+#: order/templates/order/purchase_order_detail.html:189
 #: order/templates/order/receive_parts.html:22
 #: order/templates/order/sales_order_base.html:131
 msgid "Received"
 msgstr ""
 
-#: order/models.py:641
+#: order/models.py:651
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:648 stock/models.py:508
+#: order/models.py:658 stock/models.py:508
 #: stock/templates/stock/item_base.html:320
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:649
+#: order/models.py:659
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:743 order/models.py:745
+#: order/models.py:753 order/models.py:755
 msgid "Stock item has not been assigned"
 msgstr ""
 
-#: order/models.py:749
+#: order/models.py:759
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:751
+#: order/models.py:761
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:754
+#: order/models.py:764
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:764
+#: order/models.py:774
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:769
+#: order/models.py:779
 msgid "Line"
 msgstr ""
 
-#: order/models.py:780
+#: order/models.py:790
 msgid "Item"
 msgstr ""
 
-#: order/models.py:781
+#: order/models.py:791
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:784
+#: order/models.py:794
 msgid "Enter stock allocation quantity"
 msgstr ""
 
@@ -2812,9 +2826,22 @@ msgstr ""
 msgid "Issued"
 msgstr ""
 
-#: order/templates/order/order_cancel.html:7
-#: order/templates/order/sales_order_cancel.html:9
-msgid "Cancelling this order means that the order will no longer be editable."
+#: order/templates/order/order_base.html:180
+#: order/templates/order/purchase_order_detail.html:100
+#: part/templates/part/category.html:185 part/templates/part/category.html:227
+#: stock/templates/stock/location.html:191 templates/js/stock.js:708
+#: templates/js/stock.js:1169
+msgid "New Location"
+msgstr ""
+
+#: order/templates/order/order_base.html:181
+#: order/templates/order/purchase_order_detail.html:101
+#: stock/templates/stock/location.html:42
+msgid "Create new stock location"
+msgstr ""
+
+#: order/templates/order/order_cancel.html:8
+msgid "Cancelling this order means that the order and line items will no longer be editable."
 msgstr ""
 
 #: order/templates/order/order_complete.html:7
@@ -2826,10 +2853,10 @@ msgid "This order has line items which have not been marked as received."
 msgstr ""
 
 #: order/templates/order/order_complete.html:11
-msgid "Marking this order as complete will remove these line items."
+msgid "Completing this order means that the order and line items will no longer be editable."
 msgstr ""
 
-#: order/templates/order/order_issue.html:7
+#: order/templates/order/order_issue.html:8
 msgid "After placing this purchase order, line items will no longer be editable."
 msgstr ""
 
@@ -2881,11 +2908,13 @@ msgid "Select Purchase Order"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_pos.html:45
-msgid "Create new purchase order for {{ supplier.name }}"
+#, python-format
+msgid "Create new purchase order for %(name)s"
 msgstr ""
 
 #: order/templates/order/order_wizard/select_pos.html:68
-msgid "Select a purchase order for"
+#, python-format
+msgid "Select a purchase order for %(name)s"
 msgstr ""
 
 #: order/templates/order/po_attachments.html:12
@@ -2907,43 +2936,29 @@ msgid "Purchase Order Items"
 msgstr ""
 
 #: order/templates/order/purchase_order_detail.html:24
-#: order/templates/order/sales_order_detail.html:22 order/views.py:1108
-#: order/views.py:1191
+#: order/templates/order/sales_order_detail.html:22 order/views.py:1120
+#: order/views.py:1203
 msgid "Add Line Item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:45
-#: order/templates/order/purchase_order_detail.html:125
-#: part/templates/part/category.html:185 part/templates/part/category.html:227
-#: stock/templates/stock/location.html:191 templates/js/stock.js:708
-#: templates/js/stock.js:1169
-msgid "New Location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:46
-#: order/templates/order/purchase_order_detail.html:126
-#: stock/templates/stock/location.html:42
-msgid "Create new stock location"
-msgstr ""
-
-#: order/templates/order/purchase_order_detail.html:139
+#: order/templates/order/purchase_order_detail.html:114
 msgid "No line items found"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:205
+#: order/templates/order/purchase_order_detail.html:180
 msgid "Unit Price"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:246
+#: order/templates/order/purchase_order_detail.html:221
 #: order/templates/order/sales_order_detail.html:294
 msgid "Edit line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:247
+#: order/templates/order/purchase_order_detail.html:222
 msgid "Delete line item"
 msgstr ""
 
-#: order/templates/order/purchase_order_detail.html:252
+#: order/templates/order/purchase_order_detail.html:227
 msgid "Receive line item"
 msgstr ""
 
@@ -2966,7 +2981,7 @@ msgstr ""
 #: templates/InvenTree/index.html:97 templates/InvenTree/search.html:114
 #: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:577
 #: templates/navbar.html:23 templates/stats.html:59 templates/stats.html:68
-#: users/models.py:38
+#: users/models.py:40
 msgid "Parts"
 msgstr ""
 
@@ -3019,6 +3034,10 @@ msgstr ""
 msgid "Warning"
 msgstr ""
 
+#: order/templates/order/sales_order_cancel.html:9
+msgid "Cancelling this order means that the order will no longer be editable."
+msgstr ""
+
 #: order/templates/order/sales_order_detail.html:13
 msgid "Sales Order Items"
 msgstr ""
@@ -3213,65 +3232,65 @@ msgstr ""
 msgid "No lines specified"
 msgstr ""
 
-#: order/views.py:1060
+#: order/views.py:1069
 #, python-brace-format
 msgid "Ordered {n} parts"
 msgstr ""
 
-#: order/views.py:1117
+#: order/views.py:1129
 msgid "Supplier part must be specified"
 msgstr ""
 
-#: order/views.py:1123
+#: order/views.py:1135
 msgid "Supplier must match for Part and Order"
 msgstr ""
 
-#: order/views.py:1242 order/views.py:1260
+#: order/views.py:1254 order/views.py:1272
 msgid "Edit Line Item"
 msgstr ""
 
-#: order/views.py:1276 order/views.py:1288
+#: order/views.py:1288 order/views.py:1300
 msgid "Delete Line Item"
 msgstr ""
 
-#: order/views.py:1281 order/views.py:1293
+#: order/views.py:1293 order/views.py:1305
 msgid "Deleted line item"
 msgstr ""
 
-#: order/views.py:1306
+#: order/views.py:1318
 msgid "Allocate Serial Numbers"
 msgstr ""
 
-#: order/views.py:1351
+#: order/views.py:1363
 #, python-brace-format
 msgid "Allocated {n} items"
 msgstr ""
 
-#: order/views.py:1367
+#: order/views.py:1379
 msgid "Select line item"
 msgstr ""
 
-#: order/views.py:1398
+#: order/views.py:1410
 msgid "No matching item for serial"
 msgstr ""
 
-#: order/views.py:1408
+#: order/views.py:1420
 msgid "is not in stock"
 msgstr ""
 
-#: order/views.py:1416
+#: order/views.py:1428
 msgid "already allocated to an order"
 msgstr ""
 
-#: order/views.py:1470
+#: order/views.py:1482
 msgid "Allocate Stock to Order"
 msgstr ""
 
-#: order/views.py:1544
+#: order/views.py:1556
 msgid "Edit Allocation Quantity"
 msgstr ""
 
-#: order/views.py:1559
+#: order/views.py:1571
 msgid "Remove allocation"
 msgstr ""
 
@@ -3457,7 +3476,7 @@ msgstr ""
 #: part/models.py:83 part/templates/part/category.html:23
 #: part/templates/part/category.html:94 part/templates/part/category.html:141
 #: templates/InvenTree/search.html:127 templates/stats.html:63
-#: users/models.py:37
+#: users/models.py:39
 msgid "Part Categories"
 msgstr ""
 
@@ -4004,7 +4023,7 @@ msgstr ""
 msgid "All parts"
 msgstr ""
 
-#: part/templates/part/category.html:29 part/views.py:2270
+#: part/templates/part/category.html:29 part/views.py:2282
 msgid "Create new part category"
 msgstr ""
 
@@ -4694,63 +4713,63 @@ msgstr ""
 msgid "Part Pricing"
 msgstr ""
 
-#: part/views.py:2069
+#: part/views.py:2081
 msgid "Create Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2079
+#: part/views.py:2091
 msgid "Edit Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2086
+#: part/views.py:2098
 msgid "Delete Part Parameter Template"
 msgstr ""
 
-#: part/views.py:2094
+#: part/views.py:2106
 msgid "Create Part Parameter"
 msgstr ""
 
-#: part/views.py:2144
+#: part/views.py:2156
 msgid "Edit Part Parameter"
 msgstr ""
 
-#: part/views.py:2158
+#: part/views.py:2170
 msgid "Delete Part Parameter"
 msgstr ""
 
-#: part/views.py:2218
+#: part/views.py:2230
 msgid "Edit Part Category"
 msgstr ""
 
-#: part/views.py:2256
+#: part/views.py:2268
 msgid "Delete Part Category"
 msgstr ""
 
-#: part/views.py:2262
+#: part/views.py:2274
 msgid "Part category was deleted"
 msgstr ""
 
-#: part/views.py:2314
+#: part/views.py:2326
 msgid "Create Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2415
+#: part/views.py:2427
 msgid "Edit Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2471
+#: part/views.py:2483
 msgid "Delete Category Parameter Template"
 msgstr ""
 
-#: part/views.py:2490
+#: part/views.py:2502
 msgid "Create BOM Item"
 msgstr ""
 
-#: part/views.py:2560
+#: part/views.py:2572
 msgid "Edit BOM item"
 msgstr ""
 
-#: part/views.py:2616
+#: part/views.py:2628
 msgid "Confim BOM item deletion"
 msgstr ""
 
@@ -5301,15 +5320,15 @@ msgid "Stock adjustment actions"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:164
-#: stock/templates/stock/location.html:65 templates/stock_table.html:56
+#: stock/templates/stock/location.html:65 templates/stock_table.html:57
 msgid "Count stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:167 templates/stock_table.html:54
+#: stock/templates/stock/item_base.html:167 templates/stock_table.html:55
 msgid "Add stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:170 templates/stock_table.html:55
+#: stock/templates/stock/item_base.html:170 templates/stock_table.html:56
 msgid "Remove stock"
 msgstr ""
 
@@ -5503,7 +5522,7 @@ msgid "Stock Details"
 msgstr ""
 
 #: stock/templates/stock/location.html:117 templates/InvenTree/search.html:279
-#: templates/stats.html:76 users/models.py:39
+#: templates/stats.html:76 users/models.py:41
 msgid "Stock Locations"
 msgstr ""
 
@@ -5689,7 +5708,7 @@ msgstr ""
 msgid "Add Stock Items"
 msgstr ""
 
-#: stock/views.py:1001 users/models.py:180
+#: stock/views.py:1001 users/models.py:183
 msgid "Add"
 msgstr ""
 
@@ -5867,6 +5886,31 @@ msgstr ""
 msgid "No stock location set"
 msgstr ""
 
+#: templates/InvenTree/settings/appearance.html:10
+msgid "Theme Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:17
+msgid "Color Themes"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:29
+#, python-format
+msgid ""
+"\n"
+"        The CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
+"        Please select another color theme :)\n"
+"    "
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:39
+msgid "Language"
+msgstr ""
+
+#: templates/InvenTree/settings/appearance.html:61
+msgid "Set Language"
+msgstr ""
+
 #: templates/InvenTree/settings/build.html:10
 msgid "Build Order Settings"
 msgstr ""
@@ -5950,7 +5994,7 @@ msgstr ""
 msgid "Stock Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:49
+#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:50
 msgid "Stock Options"
 msgstr ""
 
@@ -5964,7 +6008,7 @@ msgid "Account"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:9
-msgid "Theme"
+msgid "Appearance"
 msgstr ""
 
 #: templates/InvenTree/settings/tabs.html:13
@@ -5983,22 +6027,6 @@ msgstr ""
 msgid "Categories"
 msgstr ""
 
-#: templates/InvenTree/settings/theme.html:10
-msgid "Theme Settings"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:17
-msgid "Color Themes"
-msgstr ""
-
-#: templates/InvenTree/settings/theme.html:29
-#, python-format
-msgid "\n"
-"\t\tThe CSS sheet \"%(invalid_color_theme)s.css\" for the currently selected color theme was not found.<br>\n"
-"\t\tPlease select another color theme :)\n"
-"\t"
-msgstr ""
-
 #: templates/InvenTree/settings/user.html:16
 msgid "User Information"
 msgstr ""
@@ -6061,13 +6089,23 @@ msgid "View Code on GitHub"
 msgstr ""
 
 #: templates/about.html:63
-msgid "Get the App"
+msgid "Credits"
 msgstr ""
 
 #: templates/about.html:68
+msgid "Mobile App"
+msgstr ""
+
+#: templates/about.html:73
 msgid "Submit Bug Report"
 msgstr ""
 
+#: templates/about.html:82 templates/js/modals.js:550
+#: templates/js/modals.js:809 templates/modals.html:28 templates/modals.html:52
+#: templates/modals.html:93
+msgid "Close"
+msgstr ""
+
 #: templates/attachment_table.html:6
 msgid "Add Attachment"
 msgstr ""
@@ -6263,7 +6301,7 @@ msgid "Quantity Per"
 msgstr ""
 
 #: templates/js/build.js:638 templates/js/build.js:1056
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order stock"
 msgstr ""
 
@@ -6396,11 +6434,6 @@ msgstr ""
 msgid "Submit"
 msgstr ""
 
-#: templates/js/modals.js:550 templates/js/modals.js:809
-#: templates/modals.html:28 templates/modals.html:52 templates/modals.html:93
-msgid "Close"
-msgstr ""
-
 #: templates/js/modals.js:760
 msgid "Invalid response from server"
 msgstr ""
@@ -6974,6 +7007,10 @@ msgstr ""
 msgid "Form errors exist"
 msgstr ""
 
+#: templates/navbar.html:13
+msgid "Toggle navigation"
+msgstr ""
+
 #: templates/navbar.html:33
 msgid "Buy"
 msgstr ""
@@ -6986,7 +7023,7 @@ msgstr ""
 msgid "Scan Barcode"
 msgstr ""
 
-#: templates/navbar.html:77 users/models.py:36
+#: templates/navbar.html:77 users/models.py:38
 msgid "Admin"
 msgstr ""
 
@@ -7118,43 +7155,43 @@ msgstr ""
 msgid "Print test reports"
 msgstr ""
 
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
 msgid "Add to selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:55
+#: templates/stock_table.html:56
 msgid "Remove from selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:56
+#: templates/stock_table.html:57
 msgid "Stocktake selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
 msgid "Move stock"
 msgstr ""
 
-#: templates/stock_table.html:58
+#: templates/stock_table.html:59
 msgid "Order selected items"
 msgstr ""
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change status"
 msgstr ""
 
-#: templates/stock_table.html:59
+#: templates/stock_table.html:60
 msgid "Change stock status"
 msgstr ""
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete selected items"
 msgstr ""
 
-#: templates/stock_table.html:62
+#: templates/stock_table.html:63
 msgid "Delete Stock"
 msgstr ""
 
@@ -7190,35 +7227,34 @@ msgstr ""
 msgid "Important dates"
 msgstr ""
 
-#: users/models.py:167
+#: users/models.py:170
 msgid "Permission set"
 msgstr ""
 
-#: users/models.py:175
+#: users/models.py:178
 msgid "Group"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "View"
 msgstr ""
 
-#: users/models.py:178
+#: users/models.py:181
 msgid "Permission to view items"
 msgstr ""
 
-#: users/models.py:180
+#: users/models.py:183
 msgid "Permission to add items"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Change"
 msgstr ""
 
-#: users/models.py:182
+#: users/models.py:185
 msgid "Permissions to edit items"
 msgstr ""
 
-#: users/models.py:184
+#: users/models.py:187
 msgid "Permission to delete items"
 msgstr ""
-
diff --git a/tasks.py b/tasks.py
index 6eed4c488e..37cbc71eab 100644
--- a/tasks.py
+++ b/tasks.py
@@ -185,7 +185,7 @@ def translate(c):
     """
 
     # Translate applicable .py / .html / .js files
-    manage(c, "makemessages --all -e py,html,js")
+    manage(c, "makemessages --all -e py,html,js --no-wrap")
     manage(c, "compilemessages")
 
     path = os.path.join('InvenTree', 'script', 'translation_stats.py')