diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po
index aaf7c25e04..bc63af0b69 100644
--- a/InvenTree/locale/de/LC_MESSAGES/django.po
+++ b/InvenTree/locale/de/LC_MESSAGES/django.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-01-18 23:24+1100\n"
+"POT-Creation-Date: 2021-01-28 22:37+1100\n"
 "PO-Revision-Date: 2020-05-03 11:32+0200\n"
 "Last-Translator: Christian Schlüter <chschlue@gmail.com>\n"
 "Language-Team: C <kde-i18n-doc@kde.org>\n"
@@ -61,7 +61,7 @@ msgstr ""
 msgid "Select Category"
 msgstr "Teilkategorie auswählen"
 
-#: InvenTree/helpers.py:361 order/models.py:232 order/models.py:330
+#: InvenTree/helpers.py:361 order/models.py:232 order/models.py:331
 #: stock/views.py:1778
 msgid "Invalid quantity provided"
 msgstr "Keine gültige Menge"
@@ -105,12 +105,13 @@ msgstr "Datei zum Anhängen auswählen"
 msgid "File comment"
 msgstr "Datei-Kommentar"
 
-#: InvenTree/models.py:68 templates/js/stock.js:901
+#: InvenTree/models.py:68 templates/js/stock.js:919
 msgid "User"
 msgstr "Benutzer"
 
-#: InvenTree/models.py:106 label/models.py:68 part/models.py:647
-#: part/templates/part/params.html:24 templates/js/part.js:129
+#: InvenTree/models.py:106 label/models.py:68 part/models.py:654
+#: part/templates/part/params.html:24 report/models.py:152
+#: templates/js/part.js:129
 msgid "Name"
 msgstr "Name"
 
@@ -342,7 +343,7 @@ msgstr ""
 
 #: build/forms.py:78 build/templates/build/auto_allocate.html:17
 #: build/templates/build/build_base.html:83
-#: build/templates/build/detail.html:29 common/models.py:603
+#: build/templates/build/detail.html:29 common/models.py:610
 #: company/forms.py:112 company/templates/company/supplier_part_pricing.html:75
 #: order/templates/order/order_wizard/select_parts.html:32
 #: order/templates/order/purchase_order_detail.html:179
@@ -353,10 +354,10 @@ msgstr ""
 #: part/templates/part/sale_prices.html:82 stock/forms.py:306
 #: stock/templates/stock/item_base.html:51
 #: stock/templates/stock/item_base.html:57
-#: stock/templates/stock/item_base.html:234
-#: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:338
-#: templates/js/bom.js:195 templates/js/build.js:420 templates/js/stock.js:892
-#: templates/js/stock.js:1131
+#: stock/templates/stock/item_base.html:238
+#: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:367
+#: templates/js/bom.js:195 templates/js/build.js:420 templates/js/stock.js:910
+#: templates/js/stock.js:1149
 msgid "Quantity"
 msgstr "Anzahl"
 
@@ -460,14 +461,14 @@ msgstr "Referenz"
 #: company/models.py:359 company/templates/company/detail.html:23
 #: company/templates/company/supplier_part_base.html:61
 #: company/templates/company/supplier_part_detail.html:27 label/models.py:75
-#: order/templates/order/purchase_order_detail.html:161 part/models.py:671
+#: order/templates/order/purchase_order_detail.html:161 part/models.py:678
 #: part/templates/part/detail.html:51 part/templates/part/set_category.html:14
-#: templates/InvenTree/search.html:147
+#: report/models.py:166 templates/InvenTree/search.html:147
 #: templates/InvenTree/settings/header.html:9 templates/js/bom.js:180
 #: templates/js/bom.js:547 templates/js/build.js:664 templates/js/company.js:56
 #: templates/js/order.js:180 templates/js/order.js:274 templates/js/part.js:188
-#: templates/js/part.js:271 templates/js/part.js:391 templates/js/part.js:572
-#: templates/js/stock.js:511 templates/js/stock.js:873
+#: templates/js/part.js:271 templates/js/part.js:391 templates/js/part.js:586
+#: templates/js/stock.js:512 templates/js/stock.js:891
 msgid "Description"
 msgstr "Beschreibung"
 
@@ -488,16 +489,16 @@ msgstr "Bestellung, die diesem Bau zugwiesen ist"
 
 #: build/models.py:134 build/templates/build/auto_allocate.html:16
 #: build/templates/build/build_base.html:78
-#: build/templates/build/detail.html:24 order/models.py:651
+#: build/templates/build/detail.html:24 order/models.py:652
 #: order/templates/order/order_wizard/select_parts.html:30
 #: order/templates/order/purchase_order_detail.html:148
-#: order/templates/order/receive_parts.html:19 part/models.py:316
+#: order/templates/order/receive_parts.html:19 part/models.py:320
 #: part/templates/part/part_app_base.html:7 part/templates/part/related.html:26
 #: part/templates/part/set_category.html:13 templates/InvenTree/search.html:133
-#: templates/js/barcode.js:336 templates/js/bom.js:153 templates/js/bom.js:532
+#: templates/js/barcode.js:365 templates/js/bom.js:153 templates/js/bom.js:532
 #: templates/js/build.js:669 templates/js/company.js:138
-#: templates/js/part.js:252 templates/js/part.js:357 templates/js/stock.js:485
-#: templates/js/stock.js:1203
+#: templates/js/part.js:252 templates/js/part.js:357 templates/js/stock.js:486
+#: templates/js/stock.js:1221
 msgid "Part"
 msgstr "Teil"
 
@@ -557,7 +558,7 @@ msgstr "Fertig"
 msgid "Number of stock items which have been completed"
 msgstr "Objekt löschen wenn Lagerbestand aufgebraucht"
 
-#: build/models.py:186 part/templates/part/part_base.html:155
+#: build/models.py:186 part/templates/part/part_base.html:158
 msgid "Build Status"
 msgstr "Bau-Status"
 
@@ -573,30 +574,30 @@ msgstr "Losnummer"
 msgid "Batch code for this build output"
 msgstr "Chargennummer für diese Bau-Ausgabe"
 
-#: build/models.py:205 order/models.py:436
+#: build/models.py:205 order/models.py:437
 msgid "Target completion date"
 msgstr ""
 
 #: build/models.py:219 build/templates/build/detail.html:89
 #: company/templates/company/supplier_part_base.html:68
 #: company/templates/company/supplier_part_detail.html:24
-#: part/templates/part/detail.html:80 part/templates/part/part_base.html:102
-#: stock/models.py:412 stock/templates/stock/item_base.html:317
+#: part/templates/part/detail.html:80 part/templates/part/part_base.html:105
+#: stock/models.py:412 stock/templates/stock/item_base.html:321
 msgid "External Link"
 msgstr "Externer Link"
 
-#: build/models.py:220 part/models.py:705 stock/models.py:414
+#: build/models.py:220 part/models.py:712 stock/models.py:414
 msgid "Link to external URL"
 msgstr "Link zu einer externen URL"
 
 #: build/models.py:224 build/templates/build/tabs.html:23 company/models.py:366
 #: company/templates/company/tabs.html:33 order/templates/order/po_tabs.html:18
 #: order/templates/order/purchase_order_detail.html:213
-#: order/templates/order/so_tabs.html:23 part/models.py:831
+#: order/templates/order/so_tabs.html:23 part/models.py:838
 #: part/templates/part/tabs.html:73 stock/forms.py:315 stock/forms.py:347
 #: stock/forms.py:375 stock/models.py:484 stock/models.py:1554
-#: stock/templates/stock/tabs.html:26 templates/js/barcode.js:391
-#: templates/js/bom.js:293 templates/js/stock.js:127 templates/js/stock.js:623
+#: stock/templates/stock/tabs.html:26 templates/js/barcode.js:34
+#: templates/js/bom.js:293 templates/js/stock.js:128 templates/js/stock.js:624
 msgid "Notes"
 msgstr "Notizen"
 
@@ -604,76 +605,76 @@ msgstr "Notizen"
 msgid "Extra build notes"
 msgstr "Notizen für den Bau"
 
-#: build/models.py:610
+#: build/models.py:607
 #, fuzzy
 #| msgid "No action specified"
 msgid "No build output specified"
 msgstr "Keine Aktion angegeben"
 
-#: build/models.py:613
+#: build/models.py:610
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:616
+#: build/models.py:613
 #, fuzzy
 #| msgid "Quantity does not match serial numbers"
 msgid "Build output does not match Build Order"
 msgstr "Anzahl stimmt nicht mit den Seriennummern überein"
 
-#: build/models.py:691
+#: build/models.py:688
 #, fuzzy
 #| msgid "Complete Build"
 msgid "Completed build output"
 msgstr "Bau fertigstellen"
 
-#: build/models.py:933
+#: build/models.py:930
 msgid "BuildItem must be unique for build, stock_item and install_into"
 msgstr ""
 
-#: build/models.py:955
+#: build/models.py:952
 #, fuzzy
 #| msgid "Allocate Stock to Build"
 msgid "Build item must specify a build output"
 msgstr "Lagerbestand dem Bau zuweisen"
 
-#: build/models.py:960
+#: build/models.py:957
 #, python-brace-format
 msgid "Selected stock item not found in BOM for part '{p}'"
 msgstr "Ausgewähltes Lagerobjekt nicht in BOM für Teil '{p}' gefunden"
 
-#: build/models.py:964
+#: build/models.py:961
 #, python-brace-format
 msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
 msgstr ""
 "zugewiesene Anzahl ({n}) darf nicht die verfügbare ({q}) Anzahl überschreiten"
 
-#: build/models.py:971 order/models.py:735
+#: build/models.py:968 order/models.py:736
 msgid "StockItem is over-allocated"
 msgstr "Zu viele Lagerobjekte zugewiesen"
 
-#: build/models.py:975 order/models.py:738
+#: build/models.py:972 order/models.py:739
 msgid "Allocation quantity must be greater than zero"
 msgstr "Anzahl muss größer null sein"
 
-#: build/models.py:979
+#: build/models.py:976
 msgid "Quantity must be 1 for serialized stock"
 msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein"
 
-#: build/models.py:1019
+#: build/models.py:1016
 msgid "Build to allocate parts"
 msgstr "Bau starten um Teile zuzuweisen"
 
-#: build/models.py:1026
+#: build/models.py:1023
 #, fuzzy
 #| msgid "Remove stock"
 msgid "Source stock item"
 msgstr "Bestand entfernen"
 
-#: build/models.py:1038
+#: build/models.py:1035
 msgid "Stock quantity to allocate to build"
 msgstr "Lagerobjekt-Anzahl dem Bau zuweisen"
 
-#: build/models.py:1046
+#: build/models.py:1043
 #, fuzzy
 #| msgid "Destination stock location"
 msgid "Destination stock item"
@@ -759,10 +760,11 @@ msgid ""
 msgstr "Lagerobjekt dem Bau zuweisen"
 
 #: build/templates/build/auto_allocate.html:18 stock/forms.py:345
-#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:268
 #: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:183 templates/js/barcode.js:337
-#: templates/js/build.js:434 templates/js/stock.js:597
+#: templates/InvenTree/search.html:183 templates/js/barcode.js:366
+#: templates/js/barcode.js:534 templates/js/build.js:434
+#: templates/js/stock.js:598
 msgid "Location"
 msgstr "Standort"
 
@@ -838,10 +840,10 @@ msgstr "Bau-Status"
 #: build/templates/build/build_base.html:88
 #: build/templates/build/detail.html:57
 #: order/templates/order/receive_parts.html:24
-#: stock/templates/stock/item_base.html:363 templates/InvenTree/search.html:175
-#: templates/js/barcode.js:42 templates/js/build.js:697
+#: stock/templates/stock/item_base.html:367 templates/InvenTree/search.html:175
+#: templates/js/barcode.js:116 templates/js/build.js:697
 #: templates/js/order.js:185 templates/js/order.js:279
-#: templates/js/stock.js:584 templates/js/stock.js:1139
+#: templates/js/stock.js:585 templates/js/stock.js:1157
 msgid "Status"
 msgstr "Status"
 
@@ -865,13 +867,13 @@ msgid "Progress"
 msgstr ""
 
 #: build/templates/build/build_base.html:120
-#: build/templates/build/detail.html:82 order/models.py:649
+#: build/templates/build/detail.html:82 order/models.py:650
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:33
 #: order/templates/order/sales_order_notes.html:10
 #: order/templates/order/sales_order_ship.html:25
 #: part/templates/part/allocation.html:27
-#: stock/templates/stock/item_base.html:258 templates/js/order.js:240
+#: stock/templates/stock/item_base.html:262 templates/js/order.js:240
 msgid "Sales Order"
 msgstr "Bestellung"
 
@@ -1005,8 +1007,8 @@ msgid "Destination location not specified"
 msgstr "Hat dieses Teil Tracking für einzelne Objekte?"
 
 #: build/templates/build/detail.html:68
-#: stock/templates/stock/item_base.html:282 templates/js/stock.js:592
-#: templates/js/stock.js:1146 templates/js/table_filters.js:80
+#: stock/templates/stock/item_base.html:286 templates/js/stock.js:593
+#: templates/js/stock.js:1164 templates/js/table_filters.js:80
 #: templates/js/table_filters.js:161
 msgid "Batch"
 msgstr "Los"
@@ -1325,283 +1327,294 @@ msgid "Default currency"
 msgstr "Währung entfernen"
 
 #: common/models.py:75
+#, fuzzy
+#| msgid "Source Location"
+msgid "Barcode Support"
+msgstr "Quell-Standort"
+
+#: common/models.py:76
+msgid "Enable barcode scanner support"
+msgstr ""
+
+#: common/models.py:82
 msgid "IPN Regex"
 msgstr ""
 
-#: common/models.py:76
+#: common/models.py:83
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:80
+#: common/models.py:87
 #, fuzzy
 #| msgid "Duplicate Part"
 msgid "Allow Duplicate IPN"
 msgstr "Teil duplizieren"
 
-#: common/models.py:81
+#: common/models.py:88
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:87
+#: common/models.py:94
 #, fuzzy
 #| msgid "Import BOM data"
 msgid "Copy Part BOM Data"
 msgstr "Stückliste importieren"
 
-#: common/models.py:88
-msgid "Copy BOM data by default when duplicating a part"
-msgstr ""
-
-#: common/models.py:94
-#, fuzzy
-#| msgid "Parameters"
-msgid "Copy Part Parameter Data"
-msgstr "Parameter"
-
 #: common/models.py:95
-msgid "Copy parameter data by default when duplicating a part"
+msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
 #: common/models.py:101
 #, fuzzy
 #| msgid "Parameters"
-msgid "Copy Part Test Data"
+msgid "Copy Part Parameter Data"
 msgstr "Parameter"
 
 #: common/models.py:102
-msgid "Copy test data by default when duplicating a part"
+msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
 #: common/models.py:108
 #, fuzzy
+#| msgid "Parameters"
+msgid "Copy Part Test Data"
+msgstr "Parameter"
+
+#: common/models.py:109
+msgid "Copy test data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:115
+#, fuzzy
 #| msgid "Edit Part Parameter Template"
 msgid "Copy Category Parameter Templates"
 msgstr "Teilparametervorlage bearbeiten"
 
-#: common/models.py:109
+#: common/models.py:116
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:115 part/templates/part/detail.html:155 stock/forms.py:257
-#: templates/js/table_filters.js:23 templates/js/table_filters.js:270
+#: common/models.py:122 part/templates/part/detail.html:155
+#: report/models.py:159 stock/forms.py:257 templates/js/table_filters.js:23
+#: templates/js/table_filters.js:270
 msgid "Template"
 msgstr "Vorlage"
 
-#: common/models.py:116
+#: common/models.py:123
 #, fuzzy
 #| msgid "Part is not a virtual part"
 msgid "Parts are templates by default"
 msgstr "Teil ist nicht virtuell"
 
-#: common/models.py:122 part/models.py:794 part/templates/part/detail.html:165
+#: common/models.py:129 part/models.py:801 part/templates/part/detail.html:165
 #: templates/js/table_filters.js:282
 msgid "Assembly"
 msgstr "Baugruppe"
 
-#: common/models.py:123
+#: common/models.py:130
 #, fuzzy
 #| msgid "Part can be assembled from other parts"
 msgid "Parts can be assembled from other components by default"
 msgstr "Teil kann aus anderen Teilen angefertigt werden"
 
-#: common/models.py:129 part/models.py:800 part/templates/part/detail.html:175
+#: common/models.py:136 part/models.py:807 part/templates/part/detail.html:175
 #: templates/js/table_filters.js:286
 msgid "Component"
 msgstr "Komponente"
 
-#: common/models.py:130
+#: common/models.py:137
 #, fuzzy
 #| msgid "Part can be used in assemblies"
 msgid "Parts can be used as sub-components by default"
 msgstr "Teil kann in Baugruppen benutzt werden"
 
-#: common/models.py:136 part/models.py:811 part/templates/part/detail.html:195
+#: common/models.py:143 part/models.py:818 part/templates/part/detail.html:195
 msgid "Purchaseable"
 msgstr "Kaufbar"
 
-#: common/models.py:137
+#: common/models.py:144
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:143 part/models.py:816 part/templates/part/detail.html:205
+#: common/models.py:150 part/models.py:823 part/templates/part/detail.html:205
 #: templates/js/table_filters.js:294
 msgid "Salable"
 msgstr "Verkäuflich"
 
-#: common/models.py:144
+#: common/models.py:151
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:150 part/models.py:806 part/templates/part/detail.html:185
+#: common/models.py:157 part/models.py:813 part/templates/part/detail.html:185
 #: templates/js/table_filters.js:31 templates/js/table_filters.js:298
 msgid "Trackable"
 msgstr "nachverfolgbar"
 
-#: common/models.py:151
+#: common/models.py:158
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:157 part/models.py:826 part/templates/part/detail.html:145
+#: common/models.py:164 part/models.py:833 part/templates/part/detail.html:145
 #: templates/js/table_filters.js:27
 msgid "Virtual"
 msgstr "Virtuell"
 
-#: common/models.py:158
+#: common/models.py:165
 #, fuzzy
 #| msgid "Part is not a virtual part"
 msgid "Parts are virtual by default"
 msgstr "Teil ist nicht virtuell"
 
-#: common/models.py:164
+#: common/models.py:171
 #, fuzzy
 #| msgid "Stock Quantity"
 msgid "Show Quantity in Forms"
 msgstr "Bestand"
 
-#: common/models.py:165
+#: common/models.py:172
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:171
+#: common/models.py:178
 #, fuzzy
 #| msgid "Stock Export Options"
 msgid "Stock Expiry"
 msgstr "Lagerbestandsexportoptionen"
 
-#: common/models.py:172
+#: common/models.py:179
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:178
+#: common/models.py:185
 #, fuzzy
 #| msgid "Serialize Stock"
 msgid "Sell Expired Stock"
 msgstr "Lagerbestand erfassen"
 
-#: common/models.py:179
+#: common/models.py:186
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:185
+#: common/models.py:192
 #, fuzzy
 #| msgid "Stock Item"
 msgid "Stock Stale Time"
 msgstr "Lagerobjekt"
 
-#: common/models.py:186
+#: common/models.py:193
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:188 part/templates/part/detail.html:116
+#: common/models.py:195 part/templates/part/detail.html:116
 msgid "days"
 msgstr ""
 
-#: common/models.py:193
+#: common/models.py:200
 #, fuzzy
 #| msgid "Builds"
 msgid "Build Expired Stock"
 msgstr "Baue"
 
-#: common/models.py:194
+#: common/models.py:201
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:200
+#: common/models.py:207
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:201
+#: common/models.py:208
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:207
+#: common/models.py:214
 #, fuzzy
 #| msgid "Order Reference"
 msgid "Build Order Reference Prefix"
 msgstr "Bestellreferenz"
 
-#: common/models.py:208
+#: common/models.py:215
 #, fuzzy
 #| msgid "Order reference"
 msgid "Prefix value for build order reference"
 msgstr "Bestell-Referenz"
 
-#: common/models.py:213
+#: common/models.py:220
 #, fuzzy
 #| msgid "Order Reference"
 msgid "Build Order Reference Regex"
 msgstr "Bestellreferenz"
 
-#: common/models.py:214
+#: common/models.py:221
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:218
+#: common/models.py:225
 #, fuzzy
 #| msgid "Sales Order Reference"
 msgid "Sales Order Reference Prefix"
 msgstr "Bestellungsreferenz"
 
-#: common/models.py:219
+#: common/models.py:226
 #, fuzzy
 #| msgid "Order reference"
 msgid "Prefix value for sales order reference"
 msgstr "Bestell-Referenz"
 
-#: common/models.py:224
+#: common/models.py:231
 #, fuzzy
 #| msgid "Order reference"
 msgid "Purchase Order Reference Prefix"
 msgstr "Bestell-Referenz"
 
-#: common/models.py:225
+#: common/models.py:232
 #, fuzzy
 #| msgid "Order reference"
 msgid "Prefix value for purchase order reference"
 msgstr "Bestell-Referenz"
 
-#: common/models.py:448
+#: common/models.py:455
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird "
 "nicht beachtet)"
 
-#: common/models.py:450
+#: common/models.py:457
 msgid "Settings value"
 msgstr "Einstellungs-Wert"
 
-#: common/models.py:507
+#: common/models.py:514
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:517
+#: common/models.py:524
 #, fuzzy
 #| msgid "Must enter integer value"
 msgid "Value must be an integer value"
 msgstr "Nur Ganzzahl eingeben"
 
-#: common/models.py:531
+#: common/models.py:538
 msgid "Key string must be unique"
 msgstr "Schlüsseltext muss eindeutig sein"
 
-#: common/models.py:604 company/forms.py:113
+#: common/models.py:611 company/forms.py:113
 #, fuzzy
 #| msgid "Price Breaks"
 msgid "Price break quantity"
 msgstr "Preisstaffelung"
 
-#: common/models.py:612 company/templates/company/supplier_part_pricing.html:80
+#: common/models.py:619 company/templates/company/supplier_part_pricing.html:80
 #: part/templates/part/sale_prices.html:87 templates/js/bom.js:245
 msgid "Price"
 msgstr "Preis"
 
-#: common/models.py:613
+#: common/models.py:620
 #, fuzzy
 #| msgid "Enter a valid quantity"
 msgid "Unit price at specified quantity"
 msgstr "Bitte eine gültige Anzahl eingeben"
 
-#: common/models.py:636
+#: common/models.py:643
 #, fuzzy
 #| msgid "Default Location"
 msgid "Default"
@@ -1723,7 +1736,7 @@ msgid "Currency"
 msgstr "Währung bearbeiten"
 
 #: company/models.py:313 stock/models.py:366
-#: stock/templates/stock/item_base.html:214
+#: stock/templates/stock/item_base.html:218
 msgid "Base Part"
 msgstr "Basisteil"
 
@@ -1736,7 +1749,7 @@ msgstr "Teil auswählen"
 #: company/templates/company/supplier_part_detail.html:21
 #: order/templates/order/order_base.html:89
 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:170
-#: stock/templates/stock/item_base.html:324 templates/js/company.js:48
+#: stock/templates/stock/item_base.html:328 templates/js/company.js:48
 #: templates/js/company.js:164 templates/js/order.js:167
 msgid "Supplier"
 msgstr "Zulieferer"
@@ -1775,7 +1788,8 @@ msgstr "MPN"
 msgid "Manufacturer part number"
 msgstr "Hersteller-Teilenummer"
 
-#: company/models.py:353 part/models.py:704 templates/js/company.js:208
+#: company/models.py:353 part/models.py:711 templates/js/company.js:208
+#: templates/js/part.js:451
 msgid "Link"
 msgstr "Link"
 
@@ -1841,7 +1855,7 @@ msgstr "Währung entfernen"
 
 #: company/templates/company/detail.html:62
 #: order/templates/order/sales_order_base.html:89 stock/models.py:401
-#: stock/models.py:402 stock/templates/stock/item_base.html:241
+#: stock/models.py:402 stock/templates/stock/item_base.html:245
 #: templates/js/company.js:40 templates/js/order.js:261
 msgid "Customer"
 msgstr "Kunde"
@@ -1857,7 +1871,7 @@ msgstr "Neues Zuliefererteil anlegen"
 
 #: company/templates/company/detail_part.html:18
 #: order/templates/order/purchase_order_detail.html:68
-#: part/templates/part/supplier.html:14 templates/js/stock.js:1023
+#: part/templates/part/supplier.html:14 templates/js/stock.js:1041
 msgid "New Supplier Part"
 msgstr "Neues Zulieferer-Teil"
 
@@ -1885,7 +1899,7 @@ msgstr "Teile löschen"
 
 #: company/templates/company/detail_part.html:63
 #: part/templates/part/bom.html:182 part/templates/part/category.html:116
-#: templates/js/stock.js:1017
+#: templates/js/stock.js:1035
 msgid "New Part"
 msgstr "Neues Teil"
 
@@ -1978,12 +1992,12 @@ msgstr "Neuer Auftrag"
 
 #: company/templates/company/supplier_part_base.html:6
 #: company/templates/company/supplier_part_base.html:19 stock/models.py:375
-#: stock/templates/stock/item_base.html:329 templates/js/company.js:180
+#: stock/templates/stock/item_base.html:333 templates/js/company.js:180
 msgid "Supplier Part"
 msgstr "Zulieferer-Teil"
 
 #: company/templates/company/supplier_part_base.html:26
-#: part/templates/part/orders.html:14 part/templates/part/part_base.html:66
+#: part/templates/part/orders.html:14 part/templates/part/part_base.html:69
 msgid "Order part"
 msgstr "Teil bestellen"
 
@@ -2056,7 +2070,7 @@ msgstr "Bepreisung"
 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:18
 #: stock/templates/stock/location.html:29 templates/InvenTree/search.html:155
 #: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:192
-#: templates/js/part.js:418 templates/js/stock.js:519 templates/navbar.html:22
+#: templates/js/part.js:418 templates/js/stock.js:520 templates/navbar.html:22
 msgid "Stock"
 msgstr "Lagerbestand"
 
@@ -2065,7 +2079,7 @@ msgid "Orders"
 msgstr "Bestellungen"
 
 #: company/templates/company/tabs.html:9
-#: order/templates/order/receive_parts.html:14 part/models.py:317
+#: order/templates/order/receive_parts.html:14 part/models.py:321
 #: part/templates/part/cat_link.html:7 part/templates/part/category.html:94
 #: part/templates/part/category_tabs.html:6
 #: templates/InvenTree/settings/tabs.html:22 templates/navbar.html:19
@@ -2138,7 +2152,7 @@ msgstr "Firma gelöscht"
 msgid "Edit Supplier Part"
 msgstr "Zuliefererteil bearbeiten"
 
-#: company/views.py:295 templates/js/stock.js:1024
+#: company/views.py:295 templates/js/stock.js:1042
 msgid "Create new Supplier Part"
 msgstr "Neues Zuliefererteil anlegen"
 
@@ -2194,7 +2208,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:90 report/models.py:162
+#: label/models.py:90 report/models.py:172
 msgid "Enabled"
 msgstr ""
 
@@ -2206,7 +2220,7 @@ msgstr ""
 msgid "Query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: label/models.py:138 label/models.py:191
+#: label/models.py:138 label/models.py:191 report/models.py:194
 msgid "Filters"
 msgstr ""
 
@@ -2247,7 +2261,7 @@ msgstr ""
 msgid "Enter sales order number"
 msgstr "Auftrag stornieren"
 
-#: order/forms.py:140 order/models.py:437
+#: order/forms.py:140 order/models.py:438
 msgid ""
 "Target date for order completion. Order will be overdue after this date."
 msgstr ""
@@ -2268,7 +2282,7 @@ msgstr "Link auf externe Seite"
 msgid "Order notes"
 msgstr "Bestell-Notizen"
 
-#: order/models.py:171 order/models.py:430
+#: order/models.py:171 order/models.py:431
 #, fuzzy
 #| msgid "Purchase Order Details"
 msgid "Purchase order status"
@@ -2315,7 +2329,7 @@ msgstr "Erstelldatum"
 msgid "Date order was completed"
 msgstr "Bestellung als vollständig markieren"
 
-#: order/models.py:230 order/models.py:328 part/views.py:1506
+#: order/models.py:230 order/models.py:329 part/views.py:1506
 #: stock/models.py:265 stock/models.py:881
 msgid "Quantity must be greater than zero"
 msgstr "Anzahl muss größer Null sein"
@@ -2324,82 +2338,82 @@ msgstr "Anzahl muss größer Null sein"
 msgid "Part supplier must match PO supplier"
 msgstr "Teile-Zulieferer muss dem Zulieferer des Kaufvertrags entsprechen"
 
-#: order/models.py:323
+#: order/models.py:324
 msgid "Lines can only be received against an order marked as 'Placed'"
 msgstr "Nur Teile aufgegebener Bestllungen können empfangen werden"
 
-#: order/models.py:426
+#: order/models.py:427
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:432
+#: order/models.py:433
 msgid "Customer order reference code"
 msgstr "Bestellreferenz"
 
-#: order/models.py:490
+#: order/models.py:491
 msgid "SalesOrder cannot be shipped as it is not currently pending"
 msgstr "Bestellung kann nicht versendet werden weil sie nicht anhängig ist"
 
-#: order/models.py:577
+#: order/models.py:578
 msgid "Item quantity"
 msgstr "Anzahl"
 
-#: order/models.py:579
+#: order/models.py:580
 msgid "Line item reference"
 msgstr "Position - Referenz"
 
-#: order/models.py:581
+#: order/models.py:582
 msgid "Line item notes"
 msgstr "Position - Notizen"
 
-#: order/models.py:607 order/templates/order/order_base.html:9
+#: order/models.py:608 order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:24
-#: stock/templates/stock/item_base.html:296 templates/js/order.js:145
+#: stock/templates/stock/item_base.html:300 templates/js/order.js:145
 msgid "Purchase Order"
 msgstr "Kaufvertrag"
 
-#: order/models.py:620
+#: order/models.py:621
 msgid "Supplier part"
 msgstr "Zulieferer-Teil"
 
-#: order/models.py:623
+#: order/models.py:624
 msgid "Number of items received"
 msgstr "Empfangene Objekt-Anzahl"
 
-#: order/models.py:630 stock/models.py:494
-#: stock/templates/stock/item_base.html:303
+#: order/models.py:631 stock/models.py:494
+#: stock/templates/stock/item_base.html:307
 #, fuzzy
 #| msgid "Purchase Order"
 msgid "Purchase Price"
 msgstr "Kaufvertrag"
 
-#: order/models.py:631
+#: order/models.py:632
 #, fuzzy
 #| msgid "Purchase Order"
 msgid "Unit purchase price"
 msgstr "Kaufvertrag"
 
-#: order/models.py:726
+#: order/models.py:727
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr "Kann Lagerobjekt keiner Zeile mit einem anderen Teil hinzufügen"
 
-#: order/models.py:728
+#: order/models.py:729
 msgid "Cannot allocate stock to a line without a part"
 msgstr "Kann Lagerobjekt keiner Zeile ohne Teil hinzufügen"
 
-#: order/models.py:731
+#: order/models.py:732
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr "zugewiesene Anzahl darf nicht die verfügbare Anzahl überschreiten"
 
-#: order/models.py:741
+#: order/models.py:742
 msgid "Quantity must be 1 for serialized stock item"
 msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein"
 
-#: order/models.py:757
+#: order/models.py:758
 msgid "Select stock item to allocate"
 msgstr "Lagerobjekt für Zuordnung auswählen"
 
-#: order/models.py:760
+#: order/models.py:761
 msgid "Enter stock allocation quantity"
 msgstr "Zuordnungsanzahl eingeben"
 
@@ -2542,7 +2556,7 @@ msgstr "Bestellpositionen"
 #: order/templates/order/purchase_order_detail.html:39
 #: order/templates/order/purchase_order_detail.html:119
 #: part/templates/part/category.html:173 part/templates/part/category.html:215
-#: templates/js/stock.js:657 templates/js/stock.js:1029
+#: templates/js/stock.js:661 templates/js/stock.js:1047
 msgid "New Location"
 msgstr "Neuer Standort"
 
@@ -2589,7 +2603,7 @@ msgid "Select parts to receive against this order"
 msgstr ""
 
 #: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:145 templates/js/part.js:434
+#: part/templates/part/part_base.html:148 templates/js/part.js:434
 msgid "On Order"
 msgstr "bestellt"
 
@@ -2632,7 +2646,7 @@ msgstr "Auftragspositionen"
 
 #: order/templates/order/sales_order_detail.html:72
 #: order/templates/order/sales_order_detail.html:154 stock/models.py:406
-#: stock/templates/stock/item_base.html:228 templates/js/build.js:418
+#: stock/templates/stock/item_base.html:232 templates/js/build.js:418
 msgid "Serial Number"
 msgstr "Seriennummer"
 
@@ -2854,12 +2868,12 @@ msgstr "Zuordnung bearbeiten"
 msgid "Remove allocation"
 msgstr "Zuordnung entfernen"
 
-#: part/bom.py:138 part/models.py:722 part/templates/part/category.html:61
+#: part/bom.py:138 part/models.py:729 part/templates/part/category.html:61
 #: part/templates/part/detail.html:87
 msgid "Default Location"
 msgstr "Standard-Lagerort"
 
-#: part/bom.py:139 part/templates/part/part_base.html:118
+#: part/bom.py:139 part/templates/part/part_base.html:121
 msgid "Available Stock"
 msgstr "Verfügbarer Lagerbestand"
 
@@ -2932,7 +2946,7 @@ msgstr "Neues Zulieferer-Teil"
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: part/forms.py:102 part/models.py:1781
+#: part/forms.py:102 part/models.py:1788
 msgid "Parent Part"
 msgstr "Ausgangsteil"
 
@@ -3026,204 +3040,204 @@ msgstr "Vorlagen-Name des Parameters muss eindeutig sein"
 msgid "Input quantity for price calculation"
 msgstr "Eintragsmenge zur Preisberechnung"
 
-#: part/models.py:68
+#: part/models.py:72
 msgid "Default location for parts in this category"
 msgstr "Standard-Standort für Teile dieser Kategorie"
 
-#: part/models.py:71
+#: part/models.py:75
 msgid "Default keywords for parts in this category"
 msgstr "Standard-Stichworte für Teile dieser Kategorie"
 
-#: part/models.py:77 part/models.py:1826
+#: part/models.py:81 part/models.py:1833
 #: part/templates/part/part_app_base.html:9
 msgid "Part Category"
 msgstr "Teilkategorie"
 
-#: part/models.py:78 part/templates/part/category.html:18
+#: part/models.py:82 part/templates/part/category.html:18
 #: part/templates/part/category.html:89 templates/stats.html:39
 #: users/models.py:32
 msgid "Part Categories"
 msgstr "Teile-Kategorien"
 
-#: part/models.py:409 part/models.py:419
+#: part/models.py:416 part/models.py:426
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr "Teil '{p1}' wird in Stückliste für Teil '{p2}' benutzt (rekursiv)"
 
-#: part/models.py:516
+#: part/models.py:523
 #, fuzzy
 #| msgid "No serial numbers found"
 msgid "Next available serial numbers are"
 msgstr "Keine Seriennummern gefunden"
 
-#: part/models.py:520
+#: part/models.py:527
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:525
+#: part/models.py:532
 #, fuzzy
 #| msgid "Empty serial number string"
 msgid "Most recent serial number is"
 msgstr "Keine Seriennummer angegeben"
 
-#: part/models.py:604
+#: part/models.py:611
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:622
 msgid "Part must be unique for name, IPN and revision"
 msgstr "Namen, Teile- und Revisionsnummern müssen eindeutig sein"
 
-#: part/models.py:646 part/templates/part/detail.html:19
+#: part/models.py:653 part/templates/part/detail.html:19
 msgid "Part name"
 msgstr "Name des Teils"
 
-#: part/models.py:653
+#: part/models.py:660
 #, fuzzy
 #| msgid "Template"
 msgid "Is Template"
 msgstr "Vorlage"
 
-#: part/models.py:654
+#: part/models.py:661
 msgid "Is this part a template part?"
 msgstr "Ist dieses Teil eine Vorlage?"
 
-#: part/models.py:665
+#: part/models.py:672
 msgid "Is this part a variant of another part?"
 msgstr "Ist dieses Teil eine Variante eines anderen Teils?"
 
-#: part/models.py:666 part/templates/part/detail.html:57
+#: part/models.py:673 part/templates/part/detail.html:57
 msgid "Variant Of"
 msgstr "Variante von"
 
-#: part/models.py:672
+#: part/models.py:679
 msgid "Part description"
 msgstr "Beschreibung des Teils"
 
-#: part/models.py:677 part/templates/part/category.html:68
+#: part/models.py:684 part/templates/part/category.html:68
 #: part/templates/part/detail.html:64
 msgid "Keywords"
 msgstr "Schlüsselwörter"
 
-#: part/models.py:678
+#: part/models.py:685
 msgid "Part keywords to improve visibility in search results"
 msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern"
 
-#: part/models.py:685 part/templates/part/detail.html:70
+#: part/models.py:692 part/templates/part/detail.html:70
 #: part/templates/part/set_category.html:15 templates/js/part.js:405
 msgid "Category"
 msgstr "Kategorie"
 
-#: part/models.py:686
+#: part/models.py:693
 msgid "Part category"
 msgstr "Teile-Kategorie"
 
-#: part/models.py:691 part/templates/part/detail.html:25
-#: part/templates/part/part_base.html:95 templates/js/part.js:180
+#: part/models.py:698 part/templates/part/detail.html:25
+#: part/templates/part/part_base.html:98 templates/js/part.js:180
 msgid "IPN"
 msgstr "IPN (Interne Produktnummer)"
 
-#: part/models.py:692
+#: part/models.py:699
 msgid "Internal Part Number"
 msgstr "Interne Teilenummer"
 
-#: part/models.py:698
+#: part/models.py:705
 msgid "Part revision or version number"
 msgstr "Revisions- oder Versionsnummer"
 
-#: part/models.py:699 part/templates/part/detail.html:32
+#: part/models.py:706 part/templates/part/detail.html:32
 #: templates/js/part.js:184
 msgid "Revision"
 msgstr "Revision"
 
-#: part/models.py:720
+#: part/models.py:727
 msgid "Where is this item normally stored?"
 msgstr "Wo wird dieses Teil normalerweise gelagert?"
 
-#: part/models.py:767 part/templates/part/detail.html:94
+#: part/models.py:774 part/templates/part/detail.html:94
 msgid "Default Supplier"
 msgstr "Standard-Zulieferer"
 
-#: part/models.py:768
+#: part/models.py:775
 msgid "Default supplier part"
 msgstr "Standard-Zulieferer?"
 
-#: part/models.py:775
+#: part/models.py:782
 #, fuzzy
 #| msgid "Default Supplier"
 msgid "Default Expiry"
 msgstr "Standard-Zulieferer"
 
-#: part/models.py:776
+#: part/models.py:783
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:781 part/templates/part/detail.html:108
+#: part/models.py:788 part/templates/part/detail.html:108
 msgid "Minimum Stock"
 msgstr "Minimaler Lagerbestand"
 
-#: part/models.py:782
+#: part/models.py:789
 msgid "Minimum allowed stock level"
 msgstr "Minimal zulässiger Lagerbestand"
 
-#: part/models.py:788 part/templates/part/detail.html:102
+#: part/models.py:795 part/templates/part/detail.html:102
 #: part/templates/part/params.html:26
 msgid "Units"
 msgstr "Einheiten"
 
-#: part/models.py:789
+#: part/models.py:796
 msgid "Stock keeping units for this part"
 msgstr "Stock Keeping Units (SKU) für dieses Teil"
 
-#: part/models.py:795
+#: part/models.py:802
 msgid "Can this part be built from other parts?"
 msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?"
 
-#: part/models.py:801
+#: part/models.py:808
 msgid "Can this part be used to build other parts?"
 msgstr "Kann dieses Teil zum Bau von anderen genutzt werden?"
 
-#: part/models.py:807
+#: part/models.py:814
 msgid "Does this part have tracking for unique items?"
 msgstr "Hat dieses Teil Tracking für einzelne Objekte?"
 
-#: part/models.py:812
+#: part/models.py:819
 msgid "Can this part be purchased from external suppliers?"
 msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?"
 
-#: part/models.py:817
+#: part/models.py:824
 msgid "Can this part be sold to customers?"
 msgstr "Kann dieses Teil an Kunden verkauft werden?"
 
-#: part/models.py:821 part/templates/part/detail.html:222
+#: part/models.py:828 part/templates/part/detail.html:222
 #: templates/js/table_filters.js:19 templates/js/table_filters.js:55
 #: templates/js/table_filters.js:196 templates/js/table_filters.js:265
 msgid "Active"
 msgstr "Aktiv"
 
-#: part/models.py:822
+#: part/models.py:829
 msgid "Is this part active?"
 msgstr "Ist dieses Teil aktiv?"
 
-#: part/models.py:827
+#: part/models.py:834
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr "Ist dieses Teil virtuell, wie zum Beispiel eine Software oder Lizenz?"
 
-#: part/models.py:832
+#: part/models.py:839
 msgid "Part notes - supports Markdown formatting"
 msgstr "Bemerkungen - unterstüzt Markdown-Formatierung"
 
-#: part/models.py:835
+#: part/models.py:842
 msgid "Stored BOM checksum"
 msgstr "Prüfsumme der Stückliste gespeichert"
 
-#: part/models.py:1654
+#: part/models.py:1661
 #, fuzzy
 #| msgid "Stock item cannot be created for a template Part"
 msgid "Test templates can only be created for trackable parts"
 msgstr "Lagerobjekt kann nicht für Vorlagen-Teile angelegt werden"
 
-#: part/models.py:1671
+#: part/models.py:1678
 #, fuzzy
 #| msgid ""
 #| "A stock item with this serial number already exists for template part "
@@ -3233,146 +3247,146 @@ msgstr ""
 "Ein Teil mit dieser Seriennummer existiert bereits für die Teilevorlage "
 "{part}"
 
-#: part/models.py:1690 templates/js/part.js:567 templates/js/stock.js:103
+#: part/models.py:1697 templates/js/part.js:581 templates/js/stock.js:104
 #, fuzzy
 #| msgid "Instance Name"
 msgid "Test Name"
 msgstr "Instanzname"
 
-#: part/models.py:1691
+#: part/models.py:1698
 #, fuzzy
 #| msgid "Serial number for this item"
 msgid "Enter a name for the test"
 msgstr "Seriennummer für dieses Teil"
 
-#: part/models.py:1696
+#: part/models.py:1703
 #, fuzzy
 #| msgid "Description"
 msgid "Test Description"
 msgstr "Beschreibung"
 
-#: part/models.py:1697
+#: part/models.py:1704
 #, fuzzy
 #| msgid "Brief description of the build"
 msgid "Enter description for this test"
 msgstr "Kurze Beschreibung des Baus"
 
-#: part/models.py:1702 templates/js/part.js:576
+#: part/models.py:1709 templates/js/part.js:590
 #: templates/js/table_filters.js:182
 msgid "Required"
 msgstr "benötigt"
 
-#: part/models.py:1703
+#: part/models.py:1710
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:1708 templates/js/part.js:584
+#: part/models.py:1715 templates/js/part.js:598
 #, fuzzy
 #| msgid "Required Parts"
 msgid "Requires Value"
 msgstr "benötigte Teile"
 
-#: part/models.py:1709
+#: part/models.py:1716
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:1714 templates/js/part.js:591
+#: part/models.py:1721 templates/js/part.js:605
 #, fuzzy
 #| msgid "Delete Attachment"
 msgid "Requires Attachment"
 msgstr "Anhang löschen"
 
-#: part/models.py:1715
+#: part/models.py:1722
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:1748
+#: part/models.py:1755
 msgid "Parameter template name must be unique"
 msgstr "Vorlagen-Name des Parameters muss eindeutig sein"
 
-#: part/models.py:1753
+#: part/models.py:1760
 msgid "Parameter Name"
 msgstr "Name des Parameters"
 
-#: part/models.py:1755
+#: part/models.py:1762
 msgid "Parameter Units"
 msgstr "Parameter Einheit"
 
-#: part/models.py:1783 part/models.py:1831
+#: part/models.py:1790 part/models.py:1838
 #: templates/InvenTree/settings/category.html:62
 msgid "Parameter Template"
 msgstr "Parameter Vorlage"
 
-#: part/models.py:1785
+#: part/models.py:1792
 msgid "Parameter Value"
 msgstr "Parameter Wert"
 
-#: part/models.py:1835
+#: part/models.py:1842
 #, fuzzy
 #| msgid "Parameter Value"
 msgid "Default Parameter Value"
 msgstr "Parameter Wert"
 
-#: part/models.py:1862
+#: part/models.py:1869
 msgid "Select parent part"
 msgstr "Ausgangsteil auswählen"
 
-#: part/models.py:1870
+#: part/models.py:1877
 msgid "Select part to be used in BOM"
 msgstr "Teil für die Nutzung in der Stückliste auswählen"
 
-#: part/models.py:1876
+#: part/models.py:1883
 msgid "BOM quantity for this BOM item"
 msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil"
 
-#: part/models.py:1878
+#: part/models.py:1885
 #, fuzzy
 #| msgid "Confim BOM item deletion"
 msgid "This BOM item is optional"
 msgstr "Löschung von BOM-Position bestätigen"
 
-#: part/models.py:1881
+#: part/models.py:1888
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr "Geschätzter Ausschuss (absolut oder prozentual)"
 
-#: part/models.py:1884
+#: part/models.py:1891
 msgid "BOM item reference"
 msgstr "Referenz des Objekts auf der Stückliste"
 
-#: part/models.py:1887
+#: part/models.py:1894
 msgid "BOM item notes"
 msgstr "Notizen zum Stücklisten-Objekt"
 
-#: part/models.py:1889
+#: part/models.py:1896
 msgid "BOM line checksum"
 msgstr "Prüfsumme der Stückliste"
 
-#: part/models.py:1960 part/views.py:1512 part/views.py:1564
+#: part/models.py:1967 part/views.py:1512 part/views.py:1564
 #: stock/models.py:255
 #, fuzzy
 #| msgid "Overage must be an integer value or a percentage"
 msgid "Quantity must be integer value for trackable parts"
 msgstr "Überschuss muss eine Ganzzahl oder ein Prozentwert sein"
 
-#: part/models.py:1969 part/models.py:1971
+#: part/models.py:1976 part/models.py:1978
 #, fuzzy
 #| msgid "Supplier part description"
 msgid "Sub part must be specified"
 msgstr "Zuliefererbeschreibung des Teils"
 
-#: part/models.py:1974
+#: part/models.py:1981
 #, fuzzy
 #| msgid "New BOM Item"
 msgid "BOM Item"
 msgstr "Neue Stücklistenposition"
 
-#: part/models.py:2095
+#: part/models.py:2102
 #, fuzzy
 #| msgid "Select a part"
 msgid "Select Related Part"
 msgstr "Teil auswählen"
 
-#: part/models.py:2127
+#: part/models.py:2134
 msgid ""
 "Error creating relationship: check that the part is not related to itself "
 "and that the relationship is unique"
@@ -3393,9 +3407,9 @@ msgstr "Bestellung"
 #: part/templates/part/allocation.html:45
 #: stock/templates/stock/item_base.html:8
 #: stock/templates/stock/item_base.html:89
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:315
 #: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:751
-#: templates/js/stock.js:862 templates/js/stock.js:1122
+#: templates/js/stock.js:880 templates/js/stock.js:1140
 msgid "Stock Item"
 msgstr "Lagerobjekt"
 
@@ -3495,7 +3509,7 @@ msgid "All selected BOM items will be deleted"
 msgstr "Ausgewählte Stücklistenpositionen entfernen"
 
 #: part/templates/part/bom.html:183 part/views.py:594
-#: templates/js/stock.js:1018
+#: templates/js/stock.js:1036
 msgid "Create New Part"
 msgstr "Neues Teil anlegen"
 
@@ -3680,7 +3694,7 @@ msgstr "Teilkategorie auswählen"
 msgid "Export Data"
 msgstr "Exportieren"
 
-#: part/templates/part/category.html:174 templates/js/stock.js:658
+#: part/templates/part/category.html:174 templates/js/stock.js:662
 #, fuzzy
 #| msgid "Create New Location"
 msgid "Create new location"
@@ -3853,7 +3867,7 @@ msgid "New Parameter"
 msgstr "Neuer Parameter"
 
 #: part/templates/part/params.html:25 stock/models.py:1541
-#: templates/InvenTree/settings/header.html:8 templates/js/stock.js:123
+#: templates/InvenTree/settings/header.html:8 templates/js/stock.js:124
 msgid "Value"
 msgstr "Wert"
 
@@ -3889,79 +3903,79 @@ msgstr "Inaktiv"
 msgid "Star this part"
 msgstr "Teil favorisieren"
 
-#: part/templates/part/part_base.html:49
-#: stock/templates/stock/item_base.html:125
-#: stock/templates/stock/location.html:43
+#: part/templates/part/part_base.html:51
+#: stock/templates/stock/item_base.html:127
+#: stock/templates/stock/location.html:45
 #, fuzzy
 #| msgid "Source Location"
 msgid "Barcode actions"
 msgstr "Quell-Standort"
 
-#: part/templates/part/part_base.html:51
-#: stock/templates/stock/item_base.html:127
-#: stock/templates/stock/location.html:45
+#: part/templates/part/part_base.html:53
+#: stock/templates/stock/item_base.html:129
+#: stock/templates/stock/location.html:47
 #, fuzzy
 #| msgid "Part QR Code"
 msgid "Show QR Code"
 msgstr "Teil-QR-Code"
 
-#: part/templates/part/part_base.html:52
-#: stock/templates/stock/item_base.html:143
-#: stock/templates/stock/location.html:46
+#: part/templates/part/part_base.html:54
+#: stock/templates/stock/item_base.html:147
+#: stock/templates/stock/location.html:48
 msgid "Print Label"
 msgstr ""
 
-#: part/templates/part/part_base.html:56
+#: part/templates/part/part_base.html:59
 msgid "Show pricing information"
 msgstr "Kosteninformationen ansehen"
 
-#: part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:63
 #, fuzzy
 #| msgid "Count stock"
 msgid "Count part stock"
 msgstr "Bestand zählen"
 
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:78
 #, fuzzy
 #| msgid "Source Location"
 msgid "Part actions"
 msgstr "Quell-Standort"
 
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:81
 #, fuzzy
 #| msgid "Duplicate Part"
 msgid "Duplicate part"
 msgstr "Teil duplizieren"
 
-#: part/templates/part/part_base.html:81
+#: part/templates/part/part_base.html:84
 #, fuzzy
 #| msgid "Edit Template"
 msgid "Edit part"
 msgstr "Vorlage bearbeiten"
 
-#: part/templates/part/part_base.html:84
+#: part/templates/part/part_base.html:87
 #, fuzzy
 #| msgid "Delete Parts"
 msgid "Delete part"
 msgstr "Teile löschen"
 
-#: part/templates/part/part_base.html:124 templates/js/table_filters.js:121
+#: part/templates/part/part_base.html:127 templates/js/table_filters.js:121
 msgid "In Stock"
 msgstr "Auf Lager"
 
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:134
 msgid "Allocated to Build Orders"
 msgstr "Zu Bauaufträgen zugeordnet"
 
-#: part/templates/part/part_base.html:138
+#: part/templates/part/part_base.html:141
 msgid "Allocated to Sales Orders"
 msgstr "Zu Aufträgen zugeordnet"
 
-#: part/templates/part/part_base.html:160 templates/js/bom.js:260
+#: part/templates/part/part_base.html:163 templates/js/bom.js:260
 msgid "Can Build"
 msgstr "Herstellbar?"
 
-#: part/templates/part/part_base.html:166
+#: part/templates/part/part_base.html:169
 msgid "Underway"
 msgstr "unterwegs"
 
@@ -4072,7 +4086,7 @@ msgstr "Stückliste"
 msgid "Used In"
 msgstr "Benutzt in"
 
-#: part/templates/part/tabs.html:61 stock/templates/stock/item_base.html:369
+#: part/templates/part/tabs.html:61 stock/templates/stock/item_base.html:373
 msgid "Tests"
 msgstr ""
 
@@ -4361,37 +4375,37 @@ msgstr "BOM-Position beaarbeiten"
 msgid "Confim BOM item deletion"
 msgstr "Löschung von BOM-Position bestätigen"
 
-#: report/models.py:147
+#: report/models.py:153
 #, fuzzy
 #| msgid "Template part"
 msgid "Template name"
 msgstr "Vorlagenteil"
 
-#: report/models.py:153
+#: report/models.py:160
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:157
+#: report/models.py:167
 #, fuzzy
 #| msgid "Supplier part description"
 msgid "Report template description"
 msgstr "Zuliefererbeschreibung des Teils"
 
-#: report/models.py:161
+#: report/models.py:173
 #, fuzzy
 #| msgid "Supplier part description"
 msgid "Report template is enabled"
 msgstr "Zuliefererbeschreibung des Teils"
 
-#: report/models.py:168
+#: report/models.py:195
 msgid "Part query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:230
+#: report/models.py:244
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:233
+#: report/models.py:247
 #, fuzzy
 #| msgid "Settings description"
 msgid "Asset file description"
@@ -4537,7 +4551,7 @@ msgstr "Lagerort"
 msgid "Where is this stock item located?"
 msgstr "Wo wird dieses Teil normalerweise gelagert?"
 
-#: stock/models.py:389 stock/templates/stock/item_base.html:249
+#: stock/models.py:389 stock/templates/stock/item_base.html:253
 msgid "Installed In"
 msgstr "Installiert in"
 
@@ -4577,8 +4591,8 @@ msgstr "Bestellung für dieses Teil"
 msgid "Destination Sales Order"
 msgstr "Zielauftrag"
 
-#: stock/models.py:461 stock/templates/stock/item_base.html:336
-#: templates/js/stock.js:612
+#: stock/models.py:461 stock/templates/stock/item_base.html:340
+#: templates/js/stock.js:613
 #, fuzzy
 #| msgid "Export"
 msgid "Expiry Date"
@@ -4816,165 +4830,171 @@ msgstr ""
 "aufgebraucht ist."
 
 #: stock/templates/stock/item_base.html:91
-#: stock/templates/stock/item_base.html:340 templates/js/table_filters.js:111
+#: stock/templates/stock/item_base.html:344 templates/js/table_filters.js:111
 msgid "Expired"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:95
-#: stock/templates/stock/item_base.html:342 templates/js/table_filters.js:116
+#: stock/templates/stock/item_base.html:346 templates/js/table_filters.js:116
 msgid "Stale"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:130 templates/js/barcode.js:283
-#: templates/js/barcode.js:288
+#: stock/templates/stock/item_base.html:132 templates/js/barcode.js:312
+#: templates/js/barcode.js:317
 msgid "Unlink Barcode"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:132
+#: stock/templates/stock/item_base.html:134
 msgid "Link Barcode"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:140
+#: stock/templates/stock/item_base.html:136 templates/stock_table.html:31
+#, fuzzy
+#| msgid "Stock Location"
+msgid "Scan to Location"
+msgstr "Lagerort"
+
+#: stock/templates/stock/item_base.html:144
 #, fuzzy
 #| msgid "Source Location"
 msgid "Printing actions"
 msgstr "Quell-Standort"
 
-#: stock/templates/stock/item_base.html:146
+#: stock/templates/stock/item_base.html:150
 #: stock/templates/stock/item_tests.html:25
 msgid "Test Report"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:156
+#: stock/templates/stock/item_base.html:160
 #, fuzzy
 #| msgid "Confirm stock adjustment"
 msgid "Stock adjustment actions"
 msgstr "Bestands-Anpassung bestätigen"
 
-#: stock/templates/stock/item_base.html:160
-#: stock/templates/stock/location.html:57 templates/stock_table.html:40
+#: stock/templates/stock/item_base.html:164
+#: stock/templates/stock/location.html:60 templates/stock_table.html:53
 msgid "Count stock"
 msgstr "Bestand zählen"
 
-#: stock/templates/stock/item_base.html:161 templates/stock_table.html:38
+#: stock/templates/stock/item_base.html:165 templates/stock_table.html:51
 msgid "Add stock"
 msgstr "Bestand hinzufügen"
 
-#: stock/templates/stock/item_base.html:162 templates/stock_table.html:39
+#: stock/templates/stock/item_base.html:166 templates/stock_table.html:52
 msgid "Remove stock"
 msgstr "Bestand entfernen"
 
-#: stock/templates/stock/item_base.html:164
+#: stock/templates/stock/item_base.html:168
 #, fuzzy
 #| msgid "Order stock"
 msgid "Transfer stock"
 msgstr "Bestand bestellen"
 
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:170
 #, fuzzy
 #| msgid "Serialize Stock"
 msgid "Serialize stock"
 msgstr "Lagerbestand erfassen"
 
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:174
 #, fuzzy
 #| msgid "Item assigned to customer?"
 msgid "Assign to customer"
 msgstr "Ist dieses Objekt einem Kunden zugeteilt?"
 
-#: stock/templates/stock/item_base.html:173
+#: stock/templates/stock/item_base.html:177
 #, fuzzy
 #| msgid "Count stock"
 msgid "Return to stock"
 msgstr "Bestand zählen"
 
-#: stock/templates/stock/item_base.html:177 templates/js/stock.js:1159
+#: stock/templates/stock/item_base.html:181 templates/js/stock.js:1177
 #, fuzzy
 #| msgid "Installed in Stock Item"
 msgid "Uninstall stock item"
 msgstr "In Lagerobjekt installiert"
 
-#: stock/templates/stock/item_base.html:177
+#: stock/templates/stock/item_base.html:181
 msgid "Uninstall"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:186
-#: stock/templates/stock/location.html:54
+#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/location.html:57
 #, fuzzy
 #| msgid "Stock Locations"
 msgid "Stock actions"
 msgstr "Lagerobjekt-Standorte"
 
-#: stock/templates/stock/item_base.html:189
+#: stock/templates/stock/item_base.html:193
 #, fuzzy
 #| msgid "Count stock items"
 msgid "Convert to variant"
 msgstr "Lagerobjekte zählen"
 
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:196
 #, fuzzy
 #| msgid "Count stock items"
 msgid "Duplicate stock item"
 msgstr "Lagerobjekte zählen"
 
-#: stock/templates/stock/item_base.html:194
+#: stock/templates/stock/item_base.html:198
 #, fuzzy
 #| msgid "Edit Stock Item"
 msgid "Edit stock item"
 msgstr "Lagerobjekt bearbeiten"
 
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:201
 #, fuzzy
 #| msgid "Delete Stock Item"
 msgid "Delete stock item"
 msgstr "Lagerobjekt löschen"
 
-#: stock/templates/stock/item_base.html:209
+#: stock/templates/stock/item_base.html:213
 msgid "Stock Item Details"
 msgstr "Lagerbestands-Details"
 
-#: stock/templates/stock/item_base.html:268 templates/js/build.js:442
+#: stock/templates/stock/item_base.html:272 templates/js/build.js:442
 #, fuzzy
 #| msgid "No stock location set"
 msgid "No location set"
 msgstr "Kein Lagerort gesetzt"
 
-#: stock/templates/stock/item_base.html:275
+#: stock/templates/stock/item_base.html:279
 #, fuzzy
 #| msgid "Unique Identifier"
 msgid "Barcode Identifier"
 msgstr "Eindeutiger Bezeichner"
 
-#: stock/templates/stock/item_base.html:289 templates/js/build.js:642
+#: stock/templates/stock/item_base.html:293 templates/js/build.js:642
 #: templates/navbar.html:25
 msgid "Build"
 msgstr "Bau"
 
-#: stock/templates/stock/item_base.html:310
+#: stock/templates/stock/item_base.html:314
 msgid "Parent Item"
 msgstr "Elternposition"
 
-#: stock/templates/stock/item_base.html:340
+#: stock/templates/stock/item_base.html:344
 #, fuzzy
 #| msgid "This stock item is allocated to Build"
 msgid "This StockItem expired on"
 msgstr "Dieses Lagerobjekt ist dem Bau zugewiesen"
 
-#: stock/templates/stock/item_base.html:342
+#: stock/templates/stock/item_base.html:346
 #, fuzzy
 #| msgid "Child Stock Items"
 msgid "This StockItem expires on"
 msgstr "Kind-Lagerobjekte"
 
-#: stock/templates/stock/item_base.html:349 templates/js/stock.js:618
+#: stock/templates/stock/item_base.html:353 templates/js/stock.js:619
 msgid "Last Updated"
 msgstr "Zuletzt aktualisiert"
 
-#: stock/templates/stock/item_base.html:354
+#: stock/templates/stock/item_base.html:358
 msgid "Last Stocktake"
 msgstr "Letzte Inventur"
 
-#: stock/templates/stock/item_base.html:358
+#: stock/templates/stock/item_base.html:362
 msgid "No stocktake performed"
 msgstr "Keine Inventur ausgeführt"
 
@@ -5052,58 +5072,58 @@ msgstr ""
 msgid "All stock items"
 msgstr "Alle Lagerobjekte"
 
-#: stock/templates/stock/location.html:47
+#: stock/templates/stock/location.html:49
 #, fuzzy
 #| msgid "Child Stock Items"
 msgid "Check-in Items"
 msgstr "Kind-Lagerobjekte"
 
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:66
 #, fuzzy
 #| msgid "Location Description"
 msgid "Location actions"
 msgstr "Standort-Beschreibung"
 
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:68
 #, fuzzy
 #| msgid "Edit stock location"
 msgid "Edit location"
 msgstr "Lagerort bearbeiten"
 
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:70
 #, fuzzy
 #| msgid "Delete stock location"
 msgid "Delete location"
 msgstr "Lagerort löschen"
 
-#: stock/templates/stock/location.html:78
+#: stock/templates/stock/location.html:81
 msgid "Location Details"
 msgstr "Standort-Details"
 
-#: stock/templates/stock/location.html:83
+#: stock/templates/stock/location.html:86
 msgid "Location Path"
 msgstr "Standord-Pfad"
 
-#: stock/templates/stock/location.html:88
+#: stock/templates/stock/location.html:91
 msgid "Location Description"
 msgstr "Standort-Beschreibung"
 
-#: stock/templates/stock/location.html:93
+#: stock/templates/stock/location.html:96
 msgid "Sublocations"
 msgstr "Sub-Standorte"
 
-#: stock/templates/stock/location.html:98
-#: stock/templates/stock/location.html:113
+#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:116
 #: templates/InvenTree/search_stock_items.html:6 templates/stats.html:48
 #: templates/stats.html:57 users/models.py:35
 msgid "Stock Items"
 msgstr "Lagerobjekte"
 
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:106
 msgid "Stock Details"
 msgstr "Objekt-Details"
 
-#: stock/templates/stock/location.html:108
+#: stock/templates/stock/location.html:111
 #: templates/InvenTree/search_stock_location.html:6 templates/stats.html:52
 #: users/models.py:34
 msgid "Stock Locations"
@@ -5466,13 +5486,13 @@ msgstr "Keine Ergebnisse gefunden"
 msgid "Enter a search query"
 msgstr "Auftrag stornieren"
 
-#: templates/InvenTree/search.html:191 templates/js/stock.js:300
+#: templates/InvenTree/search.html:191 templates/js/stock.js:301
 #, fuzzy
 #| msgid "Item assigned to customer?"
 msgid "Shipped to customer"
 msgstr "Ist dieses Objekt einem Kunden zugeteilt?"
 
-#: templates/InvenTree/search.html:194 templates/js/stock.js:310
+#: templates/InvenTree/search.html:194 templates/js/stock.js:311
 msgid "No stock location set"
 msgstr "Kein Lagerort gesetzt"
 
@@ -5528,6 +5548,12 @@ msgstr "Vorlage löschen"
 msgid "Global InvenTree Settings"
 msgstr "InvenTree-Version"
 
+#: templates/InvenTree/settings/global.html:24
+#, fuzzy
+#| msgid "Source Location"
+msgid "Barcode Settings"
+msgstr "Quell-Standort"
+
 #: templates/InvenTree/settings/header.html:7
 #, fuzzy
 #| msgid "Settings"
@@ -5589,7 +5615,7 @@ msgstr "Auftragsdetails"
 msgid "Stock Settings"
 msgstr "Lagerobjekt-Standorte"
 
-#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:33
+#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:46
 #, fuzzy
 #| msgid "Stock Locations"
 msgid "Stock Options"
@@ -5774,91 +5800,113 @@ msgstr "Quell-Standort"
 msgid "Enter barcode data"
 msgstr "Keine Strichcodedaten bereitgestellt"
 
-#: templates/js/barcode.js:42 templates/js/modals.js:856
-msgid "Invalid server response"
+#: templates/js/barcode.js:30
+msgid "Enter optional notes for stock transfer"
 msgstr ""
 
-#: templates/js/barcode.js:143
-#, fuzzy
-#| msgid "No barcode data provided"
-msgid "Scan barcode data below"
-msgstr "Keine Strichcodedaten bereitgestellt"
-
-#: templates/js/barcode.js:217 templates/js/barcode.js:263
-#, fuzzy
-#| msgid "Unknown barcode format"
-msgid "Unknown response from server"
-msgstr "Unbekanntes Strichcode-Format"
-
-#: templates/js/barcode.js:239
-#, fuzzy
-#| msgid "Parent Stock Item"
-msgid "Link Barcode to Stock Item"
-msgstr "Eltern-Lagerobjekt"
-
-#: templates/js/barcode.js:285
-msgid ""
-"This will remove the association between this stock item and the barcode"
-msgstr ""
-
-#: templates/js/barcode.js:291
-msgid "Unlink"
-msgstr ""
-
-#: templates/js/barcode.js:350
-#, fuzzy
-#| msgid "Remove stock"
-msgid "Remove stock item"
-msgstr "Bestand entfernen"
-
-#: templates/js/barcode.js:397
+#: templates/js/barcode.js:40
 #, fuzzy
 #| msgid "Entry notes"
 msgid "Enter notes"
 msgstr "Eintrags-Notizen"
 
-#: templates/js/barcode.js:399
-msgid "Enter optional notes for stock transfer"
+#: templates/js/barcode.js:68
+msgid "Server error"
 msgstr ""
 
-#: templates/js/barcode.js:404
+#: templates/js/barcode.js:89
+#, fuzzy
+#| msgid "Unknown barcode format"
+msgid "Unknown response from server"
+msgstr "Unbekanntes Strichcode-Format"
+
+#: templates/js/barcode.js:116 templates/js/modals.js:856
+msgid "Invalid server response"
+msgstr ""
+
+#: templates/js/barcode.js:215
+#, fuzzy
+#| msgid "No barcode data provided"
+msgid "Scan barcode data below"
+msgstr "Keine Strichcodedaten bereitgestellt"
+
+#: templates/js/barcode.js:273
+msgid "No URL in response"
+msgstr ""
+
+#: templates/js/barcode.js:291
+#, fuzzy
+#| msgid "Parent Stock Item"
+msgid "Link Barcode to Stock Item"
+msgstr "Eltern-Lagerobjekt"
+
+#: templates/js/barcode.js:314
+msgid ""
+"This will remove the association between this stock item and the barcode"
+msgstr ""
+
+#: templates/js/barcode.js:320
+msgid "Unlink"
+msgstr ""
+
+#: templates/js/barcode.js:379
+#, fuzzy
+#| msgid "Remove stock"
+msgid "Remove stock item"
+msgstr "Bestand entfernen"
+
+#: templates/js/barcode.js:421
 #, fuzzy
 #| msgid "Include stock items in sub locations"
 msgid "Check Stock Items into Location"
 msgstr "Lagerobjekte in untergeordneten Lagerorten einschließen"
 
-#: templates/js/barcode.js:408
+#: templates/js/barcode.js:425 templates/js/barcode.js:550
 msgid "Check In"
 msgstr ""
 
-#: templates/js/barcode.js:466
-msgid "Server error"
-msgstr ""
+#: templates/js/barcode.js:465 templates/js/barcode.js:589
+#, fuzzy
+#| msgid "Order stock"
+msgid "Error transferring stock"
+msgstr "Bestand bestellen"
 
-#: templates/js/barcode.js:485
+#: templates/js/barcode.js:484
 #, fuzzy
 #| msgid "Stock Item Details"
 msgid "Stock Item already scanned"
 msgstr "Lagerbestands-Details"
 
-#: templates/js/barcode.js:489
+#: templates/js/barcode.js:488
 #, fuzzy
 #| msgid "Include stock items in sub locations"
 msgid "Stock Item already in this location"
 msgstr "Lagerobjekte in untergeordneten Lagerorten einschließen"
 
-#: templates/js/barcode.js:496
+#: templates/js/barcode.js:495
 #, fuzzy
 #| msgid "Added stock to {n} items"
 msgid "Added stock item"
 msgstr "Vorrat zu {n} Lagerobjekten hinzugefügt"
 
-#: templates/js/barcode.js:503
+#: templates/js/barcode.js:502
 #, fuzzy
 #| msgid "Create new Stock Item"
 msgid "Barcode does not match Stock Item"
 msgstr "Neues Lagerobjekt hinzufügen"
 
+#: templates/js/barcode.js:545
+#, fuzzy
+#| msgid "Include stock items in sub locations"
+msgid "Check Into Location"
+msgstr "Lagerobjekte in untergeordneten Lagerorten einschließen"
+
+#: templates/js/barcode.js:608
+#, fuzzy
+#| msgid "Create new Stock Item"
+msgid "Barcode does not match a valid location"
+msgstr "Neues Lagerobjekt hinzufügen"
+
 #: templates/js/bom.js:165
 msgid "Open subassembly"
 msgstr "Unterbaugruppe öffnen"
@@ -5937,7 +5985,7 @@ msgstr "Lagerbestand dem Bau zuweisen"
 msgid "Delete build output"
 msgstr "Bau entfernt"
 
-#: templates/js/build.js:209 templates/stock_table.html:18
+#: templates/js/build.js:209 templates/stock_table.html:20
 msgid "New Stock Item"
 msgstr "Neues Lagerobjekt"
 
@@ -5959,7 +6007,7 @@ msgstr "Anzahl"
 msgid "Build stock"
 msgstr "Baue"
 
-#: templates/js/build.js:582 templates/stock_table.html:42
+#: templates/js/build.js:582 templates/stock_table.html:55
 msgid "Order stock"
 msgstr "Bestand bestellen"
 
@@ -6181,7 +6229,7 @@ msgstr "Keine Bestellungen gefunden"
 msgid "Order is overdue"
 msgstr "Bau-Zuweisung ist vollständig"
 
-#: templates/js/order.js:193 templates/js/stock.js:844
+#: templates/js/order.js:193 templates/js/stock.js:862
 msgid "Date"
 msgstr "Datum"
 
@@ -6219,12 +6267,12 @@ msgstr "Verkäufliches Teil"
 msgid "No variants found"
 msgstr "Keine Teile gefunden"
 
-#: templates/js/part.js:291 templates/js/part.js:457
+#: templates/js/part.js:291 templates/js/part.js:471
 msgid "No parts found"
 msgstr "Keine Teile gefunden"
 
-#: templates/js/part.js:343 templates/js/stock.js:473
-#: templates/js/stock.js:1191
+#: templates/js/part.js:343 templates/js/stock.js:474
+#: templates/js/stock.js:1209
 msgid "Select"
 msgstr "Auswählen"
 
@@ -6240,33 +6288,33 @@ msgstr "Bestand niedrig"
 msgid "Building"
 msgstr "Im Bau"
 
-#: templates/js/part.js:517
+#: templates/js/part.js:531
 msgid "YES"
 msgstr ""
 
-#: templates/js/part.js:519
+#: templates/js/part.js:533
 msgid "NO"
 msgstr ""
 
-#: templates/js/part.js:553
+#: templates/js/part.js:567
 #, fuzzy
 #| msgid "No stock items matching query"
 msgid "No test templates matching query"
 msgstr "Keine zur Anfrage passenden Lagerobjekte"
 
-#: templates/js/part.js:604 templates/js/stock.js:74
+#: templates/js/part.js:618 templates/js/stock.js:75
 #, fuzzy
 #| msgid "Edit Sales Order"
 msgid "Edit test result"
 msgstr "Auftrag bearbeiten"
 
-#: templates/js/part.js:605 templates/js/stock.js:75
+#: templates/js/part.js:619 templates/js/stock.js:76
 #, fuzzy
 #| msgid "Delete attachment"
 msgid "Delete test result"
 msgstr "Anhang löschen"
 
-#: templates/js/part.js:611
+#: templates/js/part.js:625
 msgid "This test is defined for a parent part"
 msgstr ""
 
@@ -6294,179 +6342,179 @@ msgstr "Keine Teile gefunden"
 msgid "No report templates found which match selected stock item(s)"
 msgstr "Ausgewählte Stücklistenpositionen entfernen"
 
-#: templates/js/stock.js:37
+#: templates/js/stock.js:38
 msgid "PASS"
 msgstr ""
 
-#: templates/js/stock.js:39
+#: templates/js/stock.js:40
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/stock.js:44
+#: templates/js/stock.js:45
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/stock.js:70
+#: templates/js/stock.js:71
 #, fuzzy
 #| msgid "Edit Sales Order"
 msgid "Add test result"
 msgstr "Auftrag bearbeiten"
 
-#: templates/js/stock.js:89
+#: templates/js/stock.js:90
 #, fuzzy
 #| msgid "No results found"
 msgid "No test results found"
 msgstr "Keine Ergebnisse gefunden"
 
-#: templates/js/stock.js:131
+#: templates/js/stock.js:132
 #, fuzzy
 #| msgid "Shipment Date"
 msgid "Test Date"
 msgstr "Versanddatum"
 
-#: templates/js/stock.js:292
+#: templates/js/stock.js:293
 msgid "In production"
 msgstr ""
 
-#: templates/js/stock.js:296
+#: templates/js/stock.js:297
 #, fuzzy
 #| msgid "Installed in Stock Item"
 msgid "Installed in Stock Item"
 msgstr "In Lagerobjekt installiert"
 
-#: templates/js/stock.js:304
+#: templates/js/stock.js:305
 #, fuzzy
 #| msgid "Item assigned to customer?"
 msgid "Assigned to Sales Order"
 msgstr "Ist dieses Objekt einem Kunden zugeteilt?"
 
-#: templates/js/stock.js:324
+#: templates/js/stock.js:325
 msgid "No stock items matching query"
 msgstr "Keine zur Anfrage passenden Lagerobjekte"
 
-#: templates/js/stock.js:441
+#: templates/js/stock.js:442
 #, fuzzy
 #| msgid "Include sublocations"
 msgid "Undefined location"
 msgstr "Unterlagerorte einschließen"
 
-#: templates/js/stock.js:535
+#: templates/js/stock.js:536
 #, fuzzy
 #| msgid "StockItem is lost"
 msgid "Stock item is in production"
 msgstr "Lagerobjekt verloren"
 
-#: templates/js/stock.js:540
+#: templates/js/stock.js:541
 #, fuzzy
 #| msgid "This stock item is allocated to Sales Order"
 msgid "Stock item assigned to sales order"
 msgstr "Dieses Lagerobjekt ist dem Auftrag zugewiesen"
 
-#: templates/js/stock.js:543
+#: templates/js/stock.js:544
 #, fuzzy
 #| msgid "StockItem has been allocated"
 msgid "Stock item assigned to customer"
 msgstr "Lagerobjekt wurde zugewiesen"
 
-#: templates/js/stock.js:547
+#: templates/js/stock.js:548
 #, fuzzy
 #| msgid "StockItem has been allocated"
 msgid "Stock item has expired"
 msgstr "Lagerobjekt wurde zugewiesen"
 
-#: templates/js/stock.js:549
+#: templates/js/stock.js:550
 #, fuzzy
 #| msgid "StockItem is lost"
 msgid "Stock item will expire soon"
 msgstr "Lagerobjekt verloren"
 
-#: templates/js/stock.js:553
+#: templates/js/stock.js:554
 #, fuzzy
 #| msgid "StockItem has been allocated"
 msgid "Stock item has been allocated"
 msgstr "Lagerobjekt wurde zugewiesen"
 
-#: templates/js/stock.js:557
+#: templates/js/stock.js:558
 #, fuzzy
 #| msgid "Is this item installed in another item?"
 msgid "Stock item has been installed in another item"
 msgstr "Ist dieses Teil in einem anderen verbaut?"
 
-#: templates/js/stock.js:565
+#: templates/js/stock.js:566
 #, fuzzy
 #| msgid "StockItem has been allocated"
 msgid "Stock item has been rejected"
 msgstr "Lagerobjekt wurde zugewiesen"
 
-#: templates/js/stock.js:569
+#: templates/js/stock.js:570
 #, fuzzy
 #| msgid "StockItem is lost"
 msgid "Stock item is lost"
 msgstr "Lagerobjekt verloren"
 
-#: templates/js/stock.js:572
+#: templates/js/stock.js:573
 #, fuzzy
 #| msgid "StockItem is lost"
 msgid "Stock item is destroyed"
 msgstr "Lagerobjekt verloren"
 
-#: templates/js/stock.js:576 templates/js/table_filters.js:106
+#: templates/js/stock.js:577 templates/js/table_filters.js:106
 #, fuzzy
 #| msgid "Delete"
 msgid "Depleted"
 msgstr "Löschen"
 
-#: templates/js/stock.js:605
+#: templates/js/stock.js:606
 #, fuzzy
 #| msgid "Last Stocktake"
 msgid "Stocktake"
 msgstr "Letzte Inventur"
 
-#: templates/js/stock.js:760
+#: templates/js/stock.js:778
 #, fuzzy
 #| msgid "Stock status"
 msgid "Stock Status"
 msgstr "Bestandsstatus"
 
-#: templates/js/stock.js:775
+#: templates/js/stock.js:793
 #, fuzzy
 #| msgid "Stock status"
 msgid "Set Stock Status"
 msgstr "Bestandsstatus"
 
-#: templates/js/stock.js:789
+#: templates/js/stock.js:807
 #, fuzzy
 #| msgid "Select part to build"
 msgid "Select Status Code"
 msgstr "Teil für den Bau wählen"
 
-#: templates/js/stock.js:790
+#: templates/js/stock.js:808
 #, fuzzy
 #| msgid "StockItem has been allocated"
 msgid "Status code must be selected"
 msgstr "Lagerobjekt wurde zugewiesen"
 
-#: templates/js/stock.js:910
+#: templates/js/stock.js:928
 msgid "No user information"
 msgstr "Keine Benutzerinformation"
 
-#: templates/js/stock.js:1030
+#: templates/js/stock.js:1048
 msgid "Create New Location"
 msgstr "Neuen Standort anlegen"
 
-#: templates/js/stock.js:1129
+#: templates/js/stock.js:1147
 #, fuzzy
 #| msgid "Serial Number"
 msgid "Serial"
 msgstr "Seriennummer"
 
-#: templates/js/stock.js:1222 templates/js/table_filters.js:131
+#: templates/js/stock.js:1240 templates/js/table_filters.js:131
 #, fuzzy
 #| msgid "Installed In"
 msgid "Installed"
 msgstr "Installiert in"
 
-#: templates/js/stock.js:1247
+#: templates/js/stock.js:1265
 #, fuzzy
 #| msgid "Installed In"
 msgid "Install item"
@@ -6715,81 +6763,87 @@ msgstr ""
 msgid "Issues detected"
 msgstr "Bestellung aufgeben"
 
-#: templates/stock_table.html:12
+#: templates/stock_table.html:14
 #, fuzzy
 #| msgid "Edit Stock Location"
 msgid "Export Stock Information"
 msgstr "Lagerobjekt-Standort bearbeiten"
 
-#: templates/stock_table.html:23
+#: templates/stock_table.html:27
+#, fuzzy
+#| msgid "Source Location"
+msgid "Barcode Actions"
+msgstr "Quell-Standort"
+
+#: templates/stock_table.html:36
 #, fuzzy
 #| msgid "Source Location"
 msgid "Printing Actions"
 msgstr "Quell-Standort"
 
-#: templates/stock_table.html:27
+#: templates/stock_table.html:40
 msgid "Print labels"
 msgstr ""
 
-#: templates/stock_table.html:28
+#: templates/stock_table.html:41
 #, fuzzy
 #| msgid "Parameter Template"
 msgid "Print test reports"
 msgstr "Parameter Vorlage"
 
-#: templates/stock_table.html:38
+#: templates/stock_table.html:51
 #, fuzzy
 #| msgid "Added stock to {n} items"
 msgid "Add to selected stock items"
 msgstr "Vorrat zu {n} Lagerobjekten hinzugefügt"
 
-#: templates/stock_table.html:39
+#: templates/stock_table.html:52
 #, fuzzy
 #| msgid "Remove selected BOM items"
 msgid "Remove from selected stock items"
 msgstr "Ausgewählte Stücklistenpositionen entfernen"
 
-#: templates/stock_table.html:40
+#: templates/stock_table.html:53
 #, fuzzy
 #| msgid "Delete Stock Item"
 msgid "Stocktake selected stock items"
 msgstr "Lagerobjekt löschen"
 
-#: templates/stock_table.html:41
+#: templates/stock_table.html:54
 #, fuzzy
 #| msgid "Delete Stock Item"
 msgid "Move selected stock items"
 msgstr "Lagerobjekt löschen"
 
-#: templates/stock_table.html:41
+#: templates/stock_table.html:54
 msgid "Move stock"
 msgstr "Bestand bewegen"
 
-#: templates/stock_table.html:42
+#: templates/stock_table.html:55
 #, fuzzy
 #| msgid "Remove selected BOM items"
 msgid "Order selected items"
 msgstr "Ausgewählte Stücklistenpositionen entfernen"
 
-#: templates/stock_table.html:43
+#: templates/stock_table.html:56
 #, fuzzy
 #| msgid "Settings"
 msgid "Change status"
 msgstr "Einstellungen"
 
-#: templates/stock_table.html:43
+#: templates/stock_table.html:56
 #, fuzzy
 #| msgid "Stock status"
 msgid "Change stock status"
 msgstr "Bestandsstatus"
 
-#: templates/stock_table.html:46
+#: templates/stock_table.html:59
 #, fuzzy
 #| msgid "Delete line item"
 msgid "Delete selected items"
 msgstr "Position löschen"
 
-#: templates/stock_table.html:46
+#: templates/stock_table.html:59
 msgid "Delete Stock"
 msgstr "Bestand löschen"
 
diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po
index b983bde6a4..b12c0597d8 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-01-18 23:24+1100\n"
+"POT-Creation-Date: 2021-01-28 22:37+1100\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"
@@ -54,7 +54,7 @@ msgstr ""
 msgid "Select Category"
 msgstr ""
 
-#: InvenTree/helpers.py:361 order/models.py:232 order/models.py:330
+#: InvenTree/helpers.py:361 order/models.py:232 order/models.py:331
 #: stock/views.py:1778
 msgid "Invalid quantity provided"
 msgstr ""
@@ -95,12 +95,13 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:68 templates/js/stock.js:901
+#: InvenTree/models.py:68 templates/js/stock.js:919
 msgid "User"
 msgstr ""
 
-#: InvenTree/models.py:106 label/models.py:68 part/models.py:647
-#: part/templates/part/params.html:24 templates/js/part.js:129
+#: InvenTree/models.py:106 label/models.py:68 part/models.py:654
+#: part/templates/part/params.html:24 report/models.py:152
+#: templates/js/part.js:129
 msgid "Name"
 msgstr ""
 
@@ -306,7 +307,7 @@ msgstr ""
 
 #: build/forms.py:78 build/templates/build/auto_allocate.html:17
 #: build/templates/build/build_base.html:83
-#: build/templates/build/detail.html:29 common/models.py:603
+#: build/templates/build/detail.html:29 common/models.py:610
 #: company/forms.py:112 company/templates/company/supplier_part_pricing.html:75
 #: order/templates/order/order_wizard/select_parts.html:32
 #: order/templates/order/purchase_order_detail.html:179
@@ -317,10 +318,10 @@ msgstr ""
 #: part/templates/part/sale_prices.html:82 stock/forms.py:306
 #: stock/templates/stock/item_base.html:51
 #: stock/templates/stock/item_base.html:57
-#: stock/templates/stock/item_base.html:234
-#: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:338
-#: templates/js/bom.js:195 templates/js/build.js:420 templates/js/stock.js:892
-#: templates/js/stock.js:1131
+#: stock/templates/stock/item_base.html:238
+#: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:367
+#: templates/js/bom.js:195 templates/js/build.js:420 templates/js/stock.js:910
+#: templates/js/stock.js:1149
 msgid "Quantity"
 msgstr ""
 
@@ -402,14 +403,14 @@ msgstr ""
 #: company/models.py:359 company/templates/company/detail.html:23
 #: company/templates/company/supplier_part_base.html:61
 #: company/templates/company/supplier_part_detail.html:27 label/models.py:75
-#: order/templates/order/purchase_order_detail.html:161 part/models.py:671
+#: order/templates/order/purchase_order_detail.html:161 part/models.py:678
 #: part/templates/part/detail.html:51 part/templates/part/set_category.html:14
-#: templates/InvenTree/search.html:147
+#: report/models.py:166 templates/InvenTree/search.html:147
 #: templates/InvenTree/settings/header.html:9 templates/js/bom.js:180
 #: templates/js/bom.js:547 templates/js/build.js:664 templates/js/company.js:56
 #: templates/js/order.js:180 templates/js/order.js:274 templates/js/part.js:188
-#: templates/js/part.js:271 templates/js/part.js:391 templates/js/part.js:572
-#: templates/js/stock.js:511 templates/js/stock.js:873
+#: templates/js/part.js:271 templates/js/part.js:391 templates/js/part.js:586
+#: templates/js/stock.js:512 templates/js/stock.js:891
 msgid "Description"
 msgstr ""
 
@@ -428,16 +429,16 @@ msgstr ""
 
 #: build/models.py:134 build/templates/build/auto_allocate.html:16
 #: build/templates/build/build_base.html:78
-#: build/templates/build/detail.html:24 order/models.py:651
+#: build/templates/build/detail.html:24 order/models.py:652
 #: order/templates/order/order_wizard/select_parts.html:30
 #: order/templates/order/purchase_order_detail.html:148
-#: order/templates/order/receive_parts.html:19 part/models.py:316
+#: order/templates/order/receive_parts.html:19 part/models.py:320
 #: part/templates/part/part_app_base.html:7 part/templates/part/related.html:26
 #: part/templates/part/set_category.html:13 templates/InvenTree/search.html:133
-#: templates/js/barcode.js:336 templates/js/bom.js:153 templates/js/bom.js:532
+#: templates/js/barcode.js:365 templates/js/bom.js:153 templates/js/bom.js:532
 #: templates/js/build.js:669 templates/js/company.js:138
-#: templates/js/part.js:252 templates/js/part.js:357 templates/js/stock.js:485
-#: templates/js/stock.js:1203
+#: templates/js/part.js:252 templates/js/part.js:357 templates/js/stock.js:486
+#: templates/js/stock.js:1221
 msgid "Part"
 msgstr ""
 
@@ -487,7 +488,7 @@ msgstr ""
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:186 part/templates/part/part_base.html:155
+#: build/models.py:186 part/templates/part/part_base.html:158
 msgid "Build Status"
 msgstr ""
 
@@ -503,30 +504,30 @@ msgstr ""
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:205 order/models.py:436
+#: build/models.py:205 order/models.py:437
 msgid "Target completion date"
 msgstr ""
 
 #: build/models.py:219 build/templates/build/detail.html:89
 #: company/templates/company/supplier_part_base.html:68
 #: company/templates/company/supplier_part_detail.html:24
-#: part/templates/part/detail.html:80 part/templates/part/part_base.html:102
-#: stock/models.py:412 stock/templates/stock/item_base.html:317
+#: part/templates/part/detail.html:80 part/templates/part/part_base.html:105
+#: stock/models.py:412 stock/templates/stock/item_base.html:321
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:220 part/models.py:705 stock/models.py:414
+#: build/models.py:220 part/models.py:712 stock/models.py:414
 msgid "Link to external URL"
 msgstr ""
 
 #: build/models.py:224 build/templates/build/tabs.html:23 company/models.py:366
 #: company/templates/company/tabs.html:33 order/templates/order/po_tabs.html:18
 #: order/templates/order/purchase_order_detail.html:213
-#: order/templates/order/so_tabs.html:23 part/models.py:831
+#: order/templates/order/so_tabs.html:23 part/models.py:838
 #: part/templates/part/tabs.html:73 stock/forms.py:315 stock/forms.py:347
 #: stock/forms.py:375 stock/models.py:484 stock/models.py:1554
-#: stock/templates/stock/tabs.html:26 templates/js/barcode.js:391
-#: templates/js/bom.js:293 templates/js/stock.js:127 templates/js/stock.js:623
+#: stock/templates/stock/tabs.html:26 templates/js/barcode.js:34
+#: templates/js/bom.js:293 templates/js/stock.js:128 templates/js/stock.js:624
 msgid "Notes"
 msgstr ""
 
@@ -534,65 +535,65 @@ msgstr ""
 msgid "Extra build notes"
 msgstr ""
 
-#: build/models.py:610
+#: build/models.py:607
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:613
+#: build/models.py:610
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:616
+#: build/models.py:613
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:691
+#: build/models.py:688
 msgid "Completed build output"
 msgstr ""
 
-#: build/models.py:933
+#: build/models.py:930
 msgid "BuildItem must be unique for build, stock_item and install_into"
 msgstr ""
 
-#: build/models.py:955
+#: build/models.py:952
 msgid "Build item must specify a build output"
 msgstr ""
 
-#: build/models.py:960
+#: build/models.py:957
 #, python-brace-format
 msgid "Selected stock item not found in BOM for part '{p}'"
 msgstr ""
 
-#: build/models.py:964
+#: build/models.py:961
 #, python-brace-format
 msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
 msgstr ""
 
-#: build/models.py:971 order/models.py:735
+#: build/models.py:968 order/models.py:736
 msgid "StockItem is over-allocated"
 msgstr ""
 
-#: build/models.py:975 order/models.py:738
+#: build/models.py:972 order/models.py:739
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:979
+#: build/models.py:976
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1019
+#: build/models.py:1016
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1026
+#: build/models.py:1023
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1038
+#: build/models.py:1035
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1046
+#: build/models.py:1043
 msgid "Destination stock item"
 msgstr ""
 
@@ -658,10 +659,11 @@ msgid ""
 msgstr ""
 
 #: build/templates/build/auto_allocate.html:18 stock/forms.py:345
-#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:268
 #: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:183 templates/js/barcode.js:337
-#: templates/js/build.js:434 templates/js/stock.js:597
+#: templates/InvenTree/search.html:183 templates/js/barcode.js:366
+#: templates/js/barcode.js:534 templates/js/build.js:434
+#: templates/js/stock.js:598
 msgid "Location"
 msgstr ""
 
@@ -725,10 +727,10 @@ msgstr ""
 #: build/templates/build/build_base.html:88
 #: build/templates/build/detail.html:57
 #: order/templates/order/receive_parts.html:24
-#: stock/templates/stock/item_base.html:363 templates/InvenTree/search.html:175
-#: templates/js/barcode.js:42 templates/js/build.js:697
+#: stock/templates/stock/item_base.html:367 templates/InvenTree/search.html:175
+#: templates/js/barcode.js:116 templates/js/build.js:697
 #: templates/js/order.js:185 templates/js/order.js:279
-#: templates/js/stock.js:584 templates/js/stock.js:1139
+#: templates/js/stock.js:585 templates/js/stock.js:1157
 msgid "Status"
 msgstr ""
 
@@ -750,13 +752,13 @@ msgid "Progress"
 msgstr ""
 
 #: build/templates/build/build_base.html:120
-#: build/templates/build/detail.html:82 order/models.py:649
+#: build/templates/build/detail.html:82 order/models.py:650
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:33
 #: order/templates/order/sales_order_notes.html:10
 #: order/templates/order/sales_order_ship.html:25
 #: part/templates/part/allocation.html:27
-#: stock/templates/stock/item_base.html:258 templates/js/order.js:240
+#: stock/templates/stock/item_base.html:262 templates/js/order.js:240
 msgid "Sales Order"
 msgstr ""
 
@@ -857,8 +859,8 @@ msgid "Destination location not specified"
 msgstr ""
 
 #: build/templates/build/detail.html:68
-#: stock/templates/stock/item_base.html:282 templates/js/stock.js:592
-#: templates/js/stock.js:1146 templates/js/table_filters.js:80
+#: stock/templates/stock/item_base.html:286 templates/js/stock.js:593
+#: templates/js/stock.js:1164 templates/js/table_filters.js:80
 #: templates/js/table_filters.js:161
 msgid "Batch"
 msgstr ""
@@ -1112,233 +1114,242 @@ msgid "Default currency"
 msgstr ""
 
 #: common/models.py:75
-msgid "IPN Regex"
+msgid "Barcode Support"
 msgstr ""
 
 #: common/models.py:76
+msgid "Enable barcode scanner support"
+msgstr ""
+
+#: common/models.py:82
+msgid "IPN Regex"
+msgstr ""
+
+#: common/models.py:83
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:80
+#: common/models.py:87
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:81
+#: common/models.py:88
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:87
+#: common/models.py:94
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:88
+#: common/models.py:95
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:94
+#: common/models.py:101
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:95
+#: common/models.py:102
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:101
+#: common/models.py:108
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:102
+#: common/models.py:109
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:108
+#: common/models.py:115
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:109
+#: common/models.py:116
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:115 part/templates/part/detail.html:155 stock/forms.py:257
-#: templates/js/table_filters.js:23 templates/js/table_filters.js:270
+#: common/models.py:122 part/templates/part/detail.html:155
+#: report/models.py:159 stock/forms.py:257 templates/js/table_filters.js:23
+#: templates/js/table_filters.js:270
 msgid "Template"
 msgstr ""
 
-#: common/models.py:116
+#: common/models.py:123
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:122 part/models.py:794 part/templates/part/detail.html:165
+#: common/models.py:129 part/models.py:801 part/templates/part/detail.html:165
 #: templates/js/table_filters.js:282
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:123
+#: common/models.py:130
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:129 part/models.py:800 part/templates/part/detail.html:175
+#: common/models.py:136 part/models.py:807 part/templates/part/detail.html:175
 #: templates/js/table_filters.js:286
 msgid "Component"
 msgstr ""
 
-#: common/models.py:130
+#: common/models.py:137
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:136 part/models.py:811 part/templates/part/detail.html:195
+#: common/models.py:143 part/models.py:818 part/templates/part/detail.html:195
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:137
+#: common/models.py:144
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:143 part/models.py:816 part/templates/part/detail.html:205
+#: common/models.py:150 part/models.py:823 part/templates/part/detail.html:205
 #: templates/js/table_filters.js:294
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:144
+#: common/models.py:151
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:150 part/models.py:806 part/templates/part/detail.html:185
+#: common/models.py:157 part/models.py:813 part/templates/part/detail.html:185
 #: templates/js/table_filters.js:31 templates/js/table_filters.js:298
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:151
+#: common/models.py:158
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:157 part/models.py:826 part/templates/part/detail.html:145
+#: common/models.py:164 part/models.py:833 part/templates/part/detail.html:145
 #: templates/js/table_filters.js:27
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:158
+#: common/models.py:165
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:164
+#: common/models.py:171
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:165
+#: common/models.py:172
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:171
+#: common/models.py:178
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:172
+#: common/models.py:179
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:178
+#: common/models.py:185
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:179
+#: common/models.py:186
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:185
+#: common/models.py:192
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:186
+#: common/models.py:193
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:188 part/templates/part/detail.html:116
+#: common/models.py:195 part/templates/part/detail.html:116
 msgid "days"
 msgstr ""
 
-#: common/models.py:193
+#: common/models.py:200
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:194
+#: common/models.py:201
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:200
+#: common/models.py:207
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:201
+#: common/models.py:208
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:207
+#: common/models.py:214
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:208
+#: common/models.py:215
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:213
+#: common/models.py:220
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:214
+#: common/models.py:221
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:218
+#: common/models.py:225
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:219
+#: common/models.py:226
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:224
+#: common/models.py:231
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:225
+#: common/models.py:232
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:448
+#: common/models.py:455
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:450
+#: common/models.py:457
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:507
+#: common/models.py:514
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:517
+#: common/models.py:524
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:531
+#: common/models.py:538
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:604 company/forms.py:113
+#: common/models.py:611 company/forms.py:113
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:612 company/templates/company/supplier_part_pricing.html:80
+#: common/models.py:619 company/templates/company/supplier_part_pricing.html:80
 #: part/templates/part/sale_prices.html:87 templates/js/bom.js:245
 msgid "Price"
 msgstr ""
 
-#: common/models.py:613
+#: common/models.py:620
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:636
+#: common/models.py:643
 msgid "Default"
 msgstr ""
 
@@ -1440,7 +1451,7 @@ msgid "Currency"
 msgstr ""
 
 #: company/models.py:313 stock/models.py:366
-#: stock/templates/stock/item_base.html:214
+#: stock/templates/stock/item_base.html:218
 msgid "Base Part"
 msgstr ""
 
@@ -1453,7 +1464,7 @@ msgstr ""
 #: company/templates/company/supplier_part_detail.html:21
 #: order/templates/order/order_base.html:89
 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:170
-#: stock/templates/stock/item_base.html:324 templates/js/company.js:48
+#: stock/templates/stock/item_base.html:328 templates/js/company.js:48
 #: templates/js/company.js:164 templates/js/order.js:167
 msgid "Supplier"
 msgstr ""
@@ -1492,7 +1503,8 @@ msgstr ""
 msgid "Manufacturer part number"
 msgstr ""
 
-#: company/models.py:353 part/models.py:704 templates/js/company.js:208
+#: company/models.py:353 part/models.py:711 templates/js/company.js:208
+#: templates/js/part.js:451
 msgid "Link"
 msgstr ""
 
@@ -1550,7 +1562,7 @@ msgstr ""
 
 #: company/templates/company/detail.html:62
 #: order/templates/order/sales_order_base.html:89 stock/models.py:401
-#: stock/models.py:402 stock/templates/stock/item_base.html:241
+#: stock/models.py:402 stock/templates/stock/item_base.html:245
 #: templates/js/company.js:40 templates/js/order.js:261
 msgid "Customer"
 msgstr ""
@@ -1566,7 +1578,7 @@ msgstr ""
 
 #: company/templates/company/detail_part.html:18
 #: order/templates/order/purchase_order_detail.html:68
-#: part/templates/part/supplier.html:14 templates/js/stock.js:1023
+#: part/templates/part/supplier.html:14 templates/js/stock.js:1041
 msgid "New Supplier Part"
 msgstr ""
 
@@ -1590,7 +1602,7 @@ msgstr ""
 
 #: company/templates/company/detail_part.html:63
 #: part/templates/part/bom.html:182 part/templates/part/category.html:116
-#: templates/js/stock.js:1017
+#: templates/js/stock.js:1035
 msgid "New Part"
 msgstr ""
 
@@ -1682,12 +1694,12 @@ msgstr ""
 
 #: company/templates/company/supplier_part_base.html:6
 #: company/templates/company/supplier_part_base.html:19 stock/models.py:375
-#: stock/templates/stock/item_base.html:329 templates/js/company.js:180
+#: stock/templates/stock/item_base.html:333 templates/js/company.js:180
 msgid "Supplier Part"
 msgstr ""
 
 #: company/templates/company/supplier_part_base.html:26
-#: part/templates/part/orders.html:14 part/templates/part/part_base.html:66
+#: part/templates/part/orders.html:14 part/templates/part/part_base.html:69
 msgid "Order part"
 msgstr ""
 
@@ -1754,7 +1766,7 @@ msgstr ""
 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:18
 #: stock/templates/stock/location.html:29 templates/InvenTree/search.html:155
 #: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:192
-#: templates/js/part.js:418 templates/js/stock.js:519 templates/navbar.html:22
+#: templates/js/part.js:418 templates/js/stock.js:520 templates/navbar.html:22
 msgid "Stock"
 msgstr ""
 
@@ -1763,7 +1775,7 @@ msgid "Orders"
 msgstr ""
 
 #: company/templates/company/tabs.html:9
-#: order/templates/order/receive_parts.html:14 part/models.py:317
+#: order/templates/order/receive_parts.html:14 part/models.py:321
 #: part/templates/part/cat_link.html:7 part/templates/part/category.html:94
 #: part/templates/part/category_tabs.html:6
 #: templates/InvenTree/settings/tabs.html:22 templates/navbar.html:19
@@ -1836,7 +1848,7 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: company/views.py:295 templates/js/stock.js:1024
+#: company/views.py:295 templates/js/stock.js:1042
 msgid "Create new Supplier Part"
 msgstr ""
 
@@ -1884,7 +1896,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:90 report/models.py:162
+#: label/models.py:90 report/models.py:172
 msgid "Enabled"
 msgstr ""
 
@@ -1896,7 +1908,7 @@ msgstr ""
 msgid "Query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: label/models.py:138 label/models.py:191
+#: label/models.py:138 label/models.py:191 report/models.py:194
 msgid "Filters"
 msgstr ""
 
@@ -1933,7 +1945,7 @@ msgstr ""
 msgid "Enter sales order number"
 msgstr ""
 
-#: order/forms.py:140 order/models.py:437
+#: order/forms.py:140 order/models.py:438
 msgid ""
 "Target date for order completion. Order will be overdue after this date."
 msgstr ""
@@ -1954,7 +1966,7 @@ msgstr ""
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:171 order/models.py:430
+#: order/models.py:171 order/models.py:431
 msgid "Purchase order status"
 msgstr ""
 
@@ -1991,7 +2003,7 @@ msgstr ""
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:230 order/models.py:328 part/views.py:1506
+#: order/models.py:230 order/models.py:329 part/views.py:1506
 #: stock/models.py:265 stock/models.py:881
 msgid "Quantity must be greater than zero"
 msgstr ""
@@ -2000,78 +2012,78 @@ msgstr ""
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:323
+#: order/models.py:324
 msgid "Lines can only be received against an order marked as 'Placed'"
 msgstr ""
 
-#: order/models.py:426
+#: order/models.py:427
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:432
+#: order/models.py:433
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:490
+#: order/models.py:491
 msgid "SalesOrder cannot be shipped as it is not currently pending"
 msgstr ""
 
-#: order/models.py:577
+#: order/models.py:578
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:579
+#: order/models.py:580
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:581
+#: order/models.py:582
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:607 order/templates/order/order_base.html:9
+#: order/models.py:608 order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:24
-#: stock/templates/stock/item_base.html:296 templates/js/order.js:145
+#: stock/templates/stock/item_base.html:300 templates/js/order.js:145
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:620
+#: order/models.py:621
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:623
+#: order/models.py:624
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:630 stock/models.py:494
-#: stock/templates/stock/item_base.html:303
+#: order/models.py:631 stock/models.py:494
+#: stock/templates/stock/item_base.html:307
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:631
+#: order/models.py:632
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:726
+#: order/models.py:727
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:728
+#: order/models.py:729
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:731
+#: order/models.py:732
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:742
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:757
+#: order/models.py:758
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:760
+#: order/models.py:761
 msgid "Enter stock allocation quantity"
 msgstr ""
 
@@ -2201,7 +2213,7 @@ msgstr ""
 #: order/templates/order/purchase_order_detail.html:39
 #: order/templates/order/purchase_order_detail.html:119
 #: part/templates/part/category.html:173 part/templates/part/category.html:215
-#: templates/js/stock.js:657 templates/js/stock.js:1029
+#: templates/js/stock.js:661 templates/js/stock.js:1047
 msgid "New Location"
 msgstr ""
 
@@ -2246,7 +2258,7 @@ msgid "Select parts to receive against this order"
 msgstr ""
 
 #: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:145 templates/js/part.js:434
+#: part/templates/part/part_base.html:148 templates/js/part.js:434
 msgid "On Order"
 msgstr ""
 
@@ -2287,7 +2299,7 @@ msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
 #: order/templates/order/sales_order_detail.html:154 stock/models.py:406
-#: stock/templates/stock/item_base.html:228 templates/js/build.js:418
+#: stock/templates/stock/item_base.html:232 templates/js/build.js:418
 msgid "Serial Number"
 msgstr ""
 
@@ -2497,12 +2509,12 @@ msgstr ""
 msgid "Remove allocation"
 msgstr ""
 
-#: part/bom.py:138 part/models.py:722 part/templates/part/category.html:61
+#: part/bom.py:138 part/models.py:729 part/templates/part/category.html:61
 #: part/templates/part/detail.html:87
 msgid "Default Location"
 msgstr ""
 
-#: part/bom.py:139 part/templates/part/part_base.html:118
+#: part/bom.py:139 part/templates/part/part_base.html:121
 msgid "Available Stock"
 msgstr ""
 
@@ -2567,7 +2579,7 @@ msgstr ""
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: part/forms.py:102 part/models.py:1781
+#: part/forms.py:102 part/models.py:1788
 msgid "Parent Part"
 msgstr ""
 
@@ -2639,313 +2651,313 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:68
+#: part/models.py:72
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:71
+#: part/models.py:75
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:77 part/models.py:1826
+#: part/models.py:81 part/models.py:1833
 #: part/templates/part/part_app_base.html:9
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:78 part/templates/part/category.html:18
+#: part/models.py:82 part/templates/part/category.html:18
 #: part/templates/part/category.html:89 templates/stats.html:39
 #: users/models.py:32
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:409 part/models.py:419
+#: part/models.py:416 part/models.py:426
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:516
+#: part/models.py:523
 msgid "Next available serial numbers are"
 msgstr ""
 
-#: part/models.py:520
+#: part/models.py:527
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:525
+#: part/models.py:532
 msgid "Most recent serial number is"
 msgstr ""
 
-#: part/models.py:604
+#: part/models.py:611
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:622
 msgid "Part must be unique for name, IPN and revision"
 msgstr ""
 
-#: part/models.py:646 part/templates/part/detail.html:19
+#: part/models.py:653 part/templates/part/detail.html:19
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:653
+#: part/models.py:660
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:654
+#: part/models.py:661
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:665
+#: part/models.py:672
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:666 part/templates/part/detail.html:57
+#: part/models.py:673 part/templates/part/detail.html:57
 msgid "Variant Of"
 msgstr ""
 
-#: part/models.py:672
+#: part/models.py:679
 msgid "Part description"
 msgstr ""
 
-#: part/models.py:677 part/templates/part/category.html:68
+#: part/models.py:684 part/templates/part/category.html:68
 #: part/templates/part/detail.html:64
 msgid "Keywords"
 msgstr ""
 
-#: part/models.py:678
+#: part/models.py:685
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:685 part/templates/part/detail.html:70
+#: part/models.py:692 part/templates/part/detail.html:70
 #: part/templates/part/set_category.html:15 templates/js/part.js:405
 msgid "Category"
 msgstr ""
 
-#: part/models.py:686
+#: part/models.py:693
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:691 part/templates/part/detail.html:25
-#: part/templates/part/part_base.html:95 templates/js/part.js:180
+#: part/models.py:698 part/templates/part/detail.html:25
+#: part/templates/part/part_base.html:98 templates/js/part.js:180
 msgid "IPN"
 msgstr ""
 
-#: part/models.py:692
+#: part/models.py:699
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:698
+#: part/models.py:705
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:699 part/templates/part/detail.html:32
+#: part/models.py:706 part/templates/part/detail.html:32
 #: templates/js/part.js:184
 msgid "Revision"
 msgstr ""
 
-#: part/models.py:720
+#: part/models.py:727
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:767 part/templates/part/detail.html:94
+#: part/models.py:774 part/templates/part/detail.html:94
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:768
+#: part/models.py:775
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:775
+#: part/models.py:782
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:776
+#: part/models.py:783
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:781 part/templates/part/detail.html:108
+#: part/models.py:788 part/templates/part/detail.html:108
 msgid "Minimum Stock"
 msgstr ""
 
-#: part/models.py:782
+#: part/models.py:789
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:788 part/templates/part/detail.html:102
+#: part/models.py:795 part/templates/part/detail.html:102
 #: part/templates/part/params.html:26
 msgid "Units"
 msgstr ""
 
-#: part/models.py:789
+#: part/models.py:796
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:795
+#: part/models.py:802
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:801
+#: part/models.py:808
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:807
+#: part/models.py:814
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:812
+#: part/models.py:819
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:817
+#: part/models.py:824
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:821 part/templates/part/detail.html:222
+#: part/models.py:828 part/templates/part/detail.html:222
 #: templates/js/table_filters.js:19 templates/js/table_filters.js:55
 #: templates/js/table_filters.js:196 templates/js/table_filters.js:265
 msgid "Active"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:829
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:827
+#: part/models.py:834
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:832
+#: part/models.py:839
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:835
+#: part/models.py:842
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1654
+#: part/models.py:1661
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:1671
+#: part/models.py:1678
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:1690 templates/js/part.js:567 templates/js/stock.js:103
+#: part/models.py:1697 templates/js/part.js:581 templates/js/stock.js:104
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:1691
+#: part/models.py:1698
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:1696
+#: part/models.py:1703
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:1697
+#: part/models.py:1704
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:1702 templates/js/part.js:576
+#: part/models.py:1709 templates/js/part.js:590
 #: templates/js/table_filters.js:182
 msgid "Required"
 msgstr ""
 
-#: part/models.py:1703
+#: part/models.py:1710
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:1708 templates/js/part.js:584
+#: part/models.py:1715 templates/js/part.js:598
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:1709
+#: part/models.py:1716
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:1714 templates/js/part.js:591
+#: part/models.py:1721 templates/js/part.js:605
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:1715
+#: part/models.py:1722
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:1748
+#: part/models.py:1755
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:1753
+#: part/models.py:1760
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:1755
+#: part/models.py:1762
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:1783 part/models.py:1831
+#: part/models.py:1790 part/models.py:1838
 #: templates/InvenTree/settings/category.html:62
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:1785
+#: part/models.py:1792
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:1835
+#: part/models.py:1842
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:1862
+#: part/models.py:1869
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:1870
+#: part/models.py:1877
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:1876
+#: part/models.py:1883
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:1878
+#: part/models.py:1885
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:1881
+#: part/models.py:1888
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:1884
+#: part/models.py:1891
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:1887
+#: part/models.py:1894
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:1889
+#: part/models.py:1896
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:1960 part/views.py:1512 part/views.py:1564
+#: part/models.py:1967 part/views.py:1512 part/views.py:1564
 #: stock/models.py:255
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:1969 part/models.py:1971
+#: part/models.py:1976 part/models.py:1978
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1981
 msgid "BOM Item"
 msgstr ""
 
-#: part/models.py:2095
+#: part/models.py:2102
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:2127
+#: part/models.py:2134
 msgid ""
 "Error creating relationship: check that the part is not related to itself "
 "and that the relationship is unique"
@@ -2966,9 +2978,9 @@ msgstr ""
 #: part/templates/part/allocation.html:45
 #: stock/templates/stock/item_base.html:8
 #: stock/templates/stock/item_base.html:89
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:315
 #: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:751
-#: templates/js/stock.js:862 templates/js/stock.js:1122
+#: templates/js/stock.js:880 templates/js/stock.js:1140
 msgid "Stock Item"
 msgstr ""
 
@@ -3054,7 +3066,7 @@ msgid "All selected BOM items will be deleted"
 msgstr ""
 
 #: part/templates/part/bom.html:183 part/views.py:594
-#: templates/js/stock.js:1018
+#: templates/js/stock.js:1036
 msgid "Create New Part"
 msgstr ""
 
@@ -3203,7 +3215,7 @@ msgstr ""
 msgid "Export Data"
 msgstr ""
 
-#: part/templates/part/category.html:174 templates/js/stock.js:658
+#: part/templates/part/category.html:174 templates/js/stock.js:662
 msgid "Create new location"
 msgstr ""
 
@@ -3348,7 +3360,7 @@ msgid "New Parameter"
 msgstr ""
 
 #: part/templates/part/params.html:25 stock/models.py:1541
-#: templates/InvenTree/settings/header.html:8 templates/js/stock.js:123
+#: templates/InvenTree/settings/header.html:8 templates/js/stock.js:124
 msgid "Value"
 msgstr ""
 
@@ -3382,65 +3394,65 @@ msgstr ""
 msgid "Star this part"
 msgstr ""
 
-#: part/templates/part/part_base.html:49
-#: stock/templates/stock/item_base.html:125
-#: stock/templates/stock/location.html:43
-msgid "Barcode actions"
-msgstr ""
-
 #: part/templates/part/part_base.html:51
 #: stock/templates/stock/item_base.html:127
 #: stock/templates/stock/location.html:45
+msgid "Barcode actions"
+msgstr ""
+
+#: part/templates/part/part_base.html:53
+#: stock/templates/stock/item_base.html:129
+#: stock/templates/stock/location.html:47
 msgid "Show QR Code"
 msgstr ""
 
-#: part/templates/part/part_base.html:52
-#: stock/templates/stock/item_base.html:143
-#: stock/templates/stock/location.html:46
+#: part/templates/part/part_base.html:54
+#: stock/templates/stock/item_base.html:147
+#: stock/templates/stock/location.html:48
 msgid "Print Label"
 msgstr ""
 
-#: part/templates/part/part_base.html:56
+#: part/templates/part/part_base.html:59
 msgid "Show pricing information"
 msgstr ""
 
-#: part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:63
 msgid "Count part stock"
 msgstr ""
 
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:78
 msgid "Part actions"
 msgstr ""
 
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:81
 msgid "Duplicate part"
 msgstr ""
 
-#: part/templates/part/part_base.html:81
+#: part/templates/part/part_base.html:84
 msgid "Edit part"
 msgstr ""
 
-#: part/templates/part/part_base.html:84
+#: part/templates/part/part_base.html:87
 msgid "Delete part"
 msgstr ""
 
-#: part/templates/part/part_base.html:124 templates/js/table_filters.js:121
+#: part/templates/part/part_base.html:127 templates/js/table_filters.js:121
 msgid "In Stock"
 msgstr ""
 
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:134
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:138
+#: part/templates/part/part_base.html:141
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:160 templates/js/bom.js:260
+#: part/templates/part/part_base.html:163 templates/js/bom.js:260
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:166
+#: part/templates/part/part_base.html:169
 msgid "Underway"
 msgstr ""
 
@@ -3533,7 +3545,7 @@ msgstr ""
 msgid "Used In"
 msgstr ""
 
-#: part/templates/part/tabs.html:61 stock/templates/stock/item_base.html:369
+#: part/templates/part/tabs.html:61 stock/templates/stock/item_base.html:373
 msgid "Tests"
 msgstr ""
 
@@ -3782,31 +3794,31 @@ msgstr ""
 msgid "Confim BOM item deletion"
 msgstr ""
 
-#: report/models.py:147
+#: report/models.py:153
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:153
+#: report/models.py:160
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:157
+#: report/models.py:167
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:161
+#: report/models.py:173
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:168
+#: report/models.py:195
 msgid "Part query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:230
+#: report/models.py:244
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:233
+#: report/models.py:247
 msgid "Asset file description"
 msgstr ""
 
@@ -3927,7 +3939,7 @@ msgstr ""
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:389 stock/templates/stock/item_base.html:249
+#: stock/models.py:389 stock/templates/stock/item_base.html:253
 msgid "Installed In"
 msgstr ""
 
@@ -3967,8 +3979,8 @@ msgstr ""
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:461 stock/templates/stock/item_base.html:336
-#: templates/js/stock.js:612
+#: stock/models.py:461 stock/templates/stock/item_base.html:340
+#: templates/js/stock.js:613
 msgid "Expiry Date"
 msgstr ""
 
@@ -4162,133 +4174,137 @@ msgid ""
 msgstr ""
 
 #: stock/templates/stock/item_base.html:91
-#: stock/templates/stock/item_base.html:340 templates/js/table_filters.js:111
+#: stock/templates/stock/item_base.html:344 templates/js/table_filters.js:111
 msgid "Expired"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:95
-#: stock/templates/stock/item_base.html:342 templates/js/table_filters.js:116
+#: stock/templates/stock/item_base.html:346 templates/js/table_filters.js:116
 msgid "Stale"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:130 templates/js/barcode.js:283
-#: templates/js/barcode.js:288
+#: stock/templates/stock/item_base.html:132 templates/js/barcode.js:312
+#: templates/js/barcode.js:317
 msgid "Unlink Barcode"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:132
+#: stock/templates/stock/item_base.html:134
 msgid "Link Barcode"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:140
+#: stock/templates/stock/item_base.html:136 templates/stock_table.html:31
+msgid "Scan to Location"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:144
 msgid "Printing actions"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:146
+#: stock/templates/stock/item_base.html:150
 #: stock/templates/stock/item_tests.html:25
 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:57 templates/stock_table.html:40
+#: stock/templates/stock/item_base.html:164
+#: stock/templates/stock/location.html:60 templates/stock_table.html:53
 msgid "Count stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:161 templates/stock_table.html:38
+#: stock/templates/stock/item_base.html:165 templates/stock_table.html:51
 msgid "Add stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:162 templates/stock_table.html:39
+#: stock/templates/stock/item_base.html:166 templates/stock_table.html:52
 msgid "Remove stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:164
+#: stock/templates/stock/item_base.html:168
 msgid "Transfer stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:170
 msgid "Serialize stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:174
 msgid "Assign to customer"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:173
+#: stock/templates/stock/item_base.html:177
 msgid "Return to stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:177 templates/js/stock.js:1159
+#: stock/templates/stock/item_base.html:181 templates/js/stock.js:1177
 msgid "Uninstall stock item"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:177
+#: stock/templates/stock/item_base.html:181
 msgid "Uninstall"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:186
-#: stock/templates/stock/location.html:54
+#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/location.html:57
 msgid "Stock actions"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:189
+#: stock/templates/stock/item_base.html:193
 msgid "Convert to variant"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:196
 msgid "Duplicate stock item"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:194
+#: stock/templates/stock/item_base.html:198
 msgid "Edit stock item"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:201
 msgid "Delete stock item"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:209
+#: stock/templates/stock/item_base.html:213
 msgid "Stock Item Details"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:268 templates/js/build.js:442
+#: stock/templates/stock/item_base.html:272 templates/js/build.js:442
 msgid "No location set"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:275
+#: stock/templates/stock/item_base.html:279
 msgid "Barcode Identifier"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:289 templates/js/build.js:642
+#: stock/templates/stock/item_base.html:293 templates/js/build.js:642
 #: templates/navbar.html:25
 msgid "Build"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:310
+#: stock/templates/stock/item_base.html:314
 msgid "Parent Item"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:340
+#: stock/templates/stock/item_base.html:344
 msgid "This StockItem expired on"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:342
+#: stock/templates/stock/item_base.html:346
 msgid "This StockItem expires on"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:349 templates/js/stock.js:618
+#: stock/templates/stock/item_base.html:353 templates/js/stock.js:619
 msgid "Last Updated"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:354
+#: stock/templates/stock/item_base.html:358
 msgid "Last Stocktake"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:358
+#: stock/templates/stock/item_base.html:362
 msgid "No stocktake performed"
 msgstr ""
 
@@ -4354,50 +4370,50 @@ msgstr ""
 msgid "All stock items"
 msgstr ""
 
-#: stock/templates/stock/location.html:47
+#: stock/templates/stock/location.html:49
 msgid "Check-in Items"
 msgstr ""
 
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:66
 msgid "Location actions"
 msgstr ""
 
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:68
 msgid "Edit location"
 msgstr ""
 
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:70
 msgid "Delete location"
 msgstr ""
 
-#: stock/templates/stock/location.html:78
+#: stock/templates/stock/location.html:81
 msgid "Location Details"
 msgstr ""
 
-#: stock/templates/stock/location.html:83
+#: stock/templates/stock/location.html:86
 msgid "Location Path"
 msgstr ""
 
-#: stock/templates/stock/location.html:88
+#: stock/templates/stock/location.html:91
 msgid "Location Description"
 msgstr ""
 
-#: stock/templates/stock/location.html:93
+#: stock/templates/stock/location.html:96
 msgid "Sublocations"
 msgstr ""
 
-#: stock/templates/stock/location.html:98
-#: stock/templates/stock/location.html:113
+#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:116
 #: templates/InvenTree/search_stock_items.html:6 templates/stats.html:48
 #: templates/stats.html:57 users/models.py:35
 msgid "Stock Items"
 msgstr ""
 
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:106
 msgid "Stock Details"
 msgstr ""
 
-#: stock/templates/stock/location.html:108
+#: stock/templates/stock/location.html:111
 #: templates/InvenTree/search_stock_location.html:6 templates/stats.html:52
 #: users/models.py:34
 msgid "Stock Locations"
@@ -4698,11 +4714,11 @@ msgstr ""
 msgid "Enter a search query"
 msgstr ""
 
-#: templates/InvenTree/search.html:191 templates/js/stock.js:300
+#: templates/InvenTree/search.html:191 templates/js/stock.js:301
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/InvenTree/search.html:194 templates/js/stock.js:310
+#: templates/InvenTree/search.html:194 templates/js/stock.js:311
 msgid "No stock location set"
 msgstr ""
 
@@ -4744,6 +4760,10 @@ msgstr ""
 msgid "Global InvenTree Settings"
 msgstr ""
 
+#: templates/InvenTree/settings/global.html:24
+msgid "Barcode Settings"
+msgstr ""
+
 #: templates/InvenTree/settings/header.html:7
 msgid "Setting"
 msgstr ""
@@ -4789,7 +4809,7 @@ msgstr ""
 msgid "Stock Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:33
+#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:46
 msgid "Stock Options"
 msgstr ""
 
@@ -4940,71 +4960,87 @@ msgstr ""
 msgid "Enter barcode data"
 msgstr ""
 
-#: templates/js/barcode.js:42 templates/js/modals.js:856
-msgid "Invalid server response"
+#: templates/js/barcode.js:30
+msgid "Enter optional notes for stock transfer"
 msgstr ""
 
-#: templates/js/barcode.js:143
-msgid "Scan barcode data below"
+#: templates/js/barcode.js:40
+msgid "Enter notes"
 msgstr ""
 
-#: templates/js/barcode.js:217 templates/js/barcode.js:263
+#: templates/js/barcode.js:68
+msgid "Server error"
+msgstr ""
+
+#: templates/js/barcode.js:89
 msgid "Unknown response from server"
 msgstr ""
 
-#: templates/js/barcode.js:239
+#: templates/js/barcode.js:116 templates/js/modals.js:856
+msgid "Invalid server response"
+msgstr ""
+
+#: templates/js/barcode.js:215
+msgid "Scan barcode data below"
+msgstr ""
+
+#: templates/js/barcode.js:273
+msgid "No URL in response"
+msgstr ""
+
+#: templates/js/barcode.js:291
 msgid "Link Barcode to Stock Item"
 msgstr ""
 
-#: templates/js/barcode.js:285
+#: templates/js/barcode.js:314
 msgid ""
 "This will remove the association between this stock item and the barcode"
 msgstr ""
 
-#: templates/js/barcode.js:291
+#: templates/js/barcode.js:320
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/barcode.js:350
+#: templates/js/barcode.js:379
 msgid "Remove stock item"
 msgstr ""
 
-#: templates/js/barcode.js:397
-msgid "Enter notes"
-msgstr ""
-
-#: templates/js/barcode.js:399
-msgid "Enter optional notes for stock transfer"
-msgstr ""
-
-#: templates/js/barcode.js:404
+#: templates/js/barcode.js:421
 msgid "Check Stock Items into Location"
 msgstr ""
 
-#: templates/js/barcode.js:408
+#: templates/js/barcode.js:425 templates/js/barcode.js:550
 msgid "Check In"
 msgstr ""
 
-#: templates/js/barcode.js:466
-msgid "Server error"
+#: templates/js/barcode.js:465 templates/js/barcode.js:589
+msgid "Error transferring stock"
 msgstr ""
 
-#: templates/js/barcode.js:485
+#: templates/js/barcode.js:484
 msgid "Stock Item already scanned"
 msgstr ""
 
-#: templates/js/barcode.js:489
+#: templates/js/barcode.js:488
 msgid "Stock Item already in this location"
 msgstr ""
 
-#: templates/js/barcode.js:496
+#: templates/js/barcode.js:495
 msgid "Added stock item"
 msgstr ""
 
-#: templates/js/barcode.js:503
+#: templates/js/barcode.js:502
 msgid "Barcode does not match Stock Item"
 msgstr ""
 
+#: templates/js/barcode.js:545
+msgid "Check Into Location"
+msgstr ""
+
+#: templates/js/barcode.js:608
+msgid "Barcode does not match a valid location"
+msgstr ""
+
 #: templates/js/bom.js:165
 msgid "Open subassembly"
 msgstr ""
@@ -5069,7 +5105,7 @@ msgstr ""
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/build.js:209 templates/stock_table.html:18
+#: templates/js/build.js:209 templates/stock_table.html:20
 msgid "New Stock Item"
 msgstr ""
 
@@ -5085,7 +5121,7 @@ msgstr ""
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/build.js:582 templates/stock_table.html:42
+#: templates/js/build.js:582 templates/stock_table.html:55
 msgid "Order stock"
 msgstr ""
 
@@ -5271,7 +5307,7 @@ msgstr ""
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/order.js:193 templates/js/stock.js:844
+#: templates/js/order.js:193 templates/js/stock.js:862
 msgid "Date"
 msgstr ""
 
@@ -5303,12 +5339,12 @@ msgstr ""
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/part.js:291 templates/js/part.js:457
+#: templates/js/part.js:291 templates/js/part.js:471
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/part.js:343 templates/js/stock.js:473
-#: templates/js/stock.js:1191
+#: templates/js/part.js:343 templates/js/stock.js:474
+#: templates/js/stock.js:1209
 msgid "Select"
 msgstr ""
 
@@ -5324,27 +5360,27 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: templates/js/part.js:517
+#: templates/js/part.js:531
 msgid "YES"
 msgstr ""
 
-#: templates/js/part.js:519
+#: templates/js/part.js:533
 msgid "NO"
 msgstr ""
 
-#: templates/js/part.js:553
+#: templates/js/part.js:567
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/part.js:604 templates/js/stock.js:74
+#: templates/js/part.js:618 templates/js/stock.js:75
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/part.js:605 templates/js/stock.js:75
+#: templates/js/part.js:619 templates/js/stock.js:76
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/part.js:611
+#: templates/js/part.js:625
 msgid "This test is defined for a parent part"
 msgstr ""
 
@@ -5364,131 +5400,131 @@ msgstr ""
 msgid "No report templates found which match selected stock item(s)"
 msgstr ""
 
-#: templates/js/stock.js:37
+#: templates/js/stock.js:38
 msgid "PASS"
 msgstr ""
 
-#: templates/js/stock.js:39
+#: templates/js/stock.js:40
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/stock.js:44
+#: templates/js/stock.js:45
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/stock.js:70
+#: templates/js/stock.js:71
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/stock.js:89
+#: templates/js/stock.js:90
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/stock.js:131
+#: templates/js/stock.js:132
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/stock.js:292
+#: templates/js/stock.js:293
 msgid "In production"
 msgstr ""
 
-#: templates/js/stock.js:296
+#: templates/js/stock.js:297
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/stock.js:304
+#: templates/js/stock.js:305
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/stock.js:324
+#: templates/js/stock.js:325
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/stock.js:441
+#: templates/js/stock.js:442
 msgid "Undefined location"
 msgstr ""
 
-#: templates/js/stock.js:535
+#: templates/js/stock.js:536
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/stock.js:540
+#: templates/js/stock.js:541
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/stock.js:543
+#: templates/js/stock.js:544
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/stock.js:547
+#: templates/js/stock.js:548
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/stock.js:549
+#: templates/js/stock.js:550
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/stock.js:553
+#: templates/js/stock.js:554
 msgid "Stock item has been allocated"
 msgstr ""
 
-#: templates/js/stock.js:557
+#: templates/js/stock.js:558
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/stock.js:565
+#: templates/js/stock.js:566
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/stock.js:569
+#: templates/js/stock.js:570
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/stock.js:572
+#: templates/js/stock.js:573
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/stock.js:576 templates/js/table_filters.js:106
+#: templates/js/stock.js:577 templates/js/table_filters.js:106
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/stock.js:605
+#: templates/js/stock.js:606
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/stock.js:760
+#: templates/js/stock.js:778
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/stock.js:775
+#: templates/js/stock.js:793
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/stock.js:789
+#: templates/js/stock.js:807
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/stock.js:790
+#: templates/js/stock.js:808
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/stock.js:910
+#: templates/js/stock.js:928
 msgid "No user information"
 msgstr ""
 
-#: templates/js/stock.js:1030
+#: templates/js/stock.js:1048
 msgid "Create New Location"
 msgstr ""
 
-#: templates/js/stock.js:1129
+#: templates/js/stock.js:1147
 msgid "Serial"
 msgstr ""
 
-#: templates/js/stock.js:1222 templates/js/table_filters.js:131
+#: templates/js/stock.js:1240 templates/js/table_filters.js:131
 msgid "Installed"
 msgstr ""
 
-#: templates/js/stock.js:1247
+#: templates/js/stock.js:1265
 msgid "Install item"
 msgstr ""
 
@@ -5697,59 +5733,63 @@ msgstr ""
 msgid "Issues detected"
 msgstr ""
 
-#: templates/stock_table.html:12
+#: templates/stock_table.html:14
 msgid "Export Stock Information"
 msgstr ""
 
-#: templates/stock_table.html:23
+#: templates/stock_table.html:27
+msgid "Barcode Actions"
+msgstr ""
+
+#: templates/stock_table.html:36
 msgid "Printing Actions"
 msgstr ""
 
-#: templates/stock_table.html:27
+#: templates/stock_table.html:40
 msgid "Print labels"
 msgstr ""
 
-#: templates/stock_table.html:28
+#: templates/stock_table.html:41
 msgid "Print test reports"
 msgstr ""
 
-#: templates/stock_table.html:38
+#: templates/stock_table.html:51
 msgid "Add to selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:39
+#: templates/stock_table.html:52
 msgid "Remove from selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:40
+#: templates/stock_table.html:53
 msgid "Stocktake selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:41
+#: templates/stock_table.html:54
 msgid "Move selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:41
+#: templates/stock_table.html:54
 msgid "Move stock"
 msgstr ""
 
-#: templates/stock_table.html:42
+#: templates/stock_table.html:55
 msgid "Order selected items"
 msgstr ""
 
-#: templates/stock_table.html:43
+#: templates/stock_table.html:56
 msgid "Change status"
 msgstr ""
 
-#: templates/stock_table.html:43
+#: templates/stock_table.html:56
 msgid "Change stock status"
 msgstr ""
 
-#: templates/stock_table.html:46
+#: templates/stock_table.html:59
 msgid "Delete selected items"
 msgstr ""
 
-#: templates/stock_table.html:46
+#: templates/stock_table.html:59
 msgid "Delete Stock"
 msgstr ""
 
diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po
index b983bde6a4..b12c0597d8 100644
--- a/InvenTree/locale/es/LC_MESSAGES/django.po
+++ b/InvenTree/locale/es/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-01-18 23:24+1100\n"
+"POT-Creation-Date: 2021-01-28 22:37+1100\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"
@@ -54,7 +54,7 @@ msgstr ""
 msgid "Select Category"
 msgstr ""
 
-#: InvenTree/helpers.py:361 order/models.py:232 order/models.py:330
+#: InvenTree/helpers.py:361 order/models.py:232 order/models.py:331
 #: stock/views.py:1778
 msgid "Invalid quantity provided"
 msgstr ""
@@ -95,12 +95,13 @@ msgstr ""
 msgid "File comment"
 msgstr ""
 
-#: InvenTree/models.py:68 templates/js/stock.js:901
+#: InvenTree/models.py:68 templates/js/stock.js:919
 msgid "User"
 msgstr ""
 
-#: InvenTree/models.py:106 label/models.py:68 part/models.py:647
-#: part/templates/part/params.html:24 templates/js/part.js:129
+#: InvenTree/models.py:106 label/models.py:68 part/models.py:654
+#: part/templates/part/params.html:24 report/models.py:152
+#: templates/js/part.js:129
 msgid "Name"
 msgstr ""
 
@@ -306,7 +307,7 @@ msgstr ""
 
 #: build/forms.py:78 build/templates/build/auto_allocate.html:17
 #: build/templates/build/build_base.html:83
-#: build/templates/build/detail.html:29 common/models.py:603
+#: build/templates/build/detail.html:29 common/models.py:610
 #: company/forms.py:112 company/templates/company/supplier_part_pricing.html:75
 #: order/templates/order/order_wizard/select_parts.html:32
 #: order/templates/order/purchase_order_detail.html:179
@@ -317,10 +318,10 @@ msgstr ""
 #: part/templates/part/sale_prices.html:82 stock/forms.py:306
 #: stock/templates/stock/item_base.html:51
 #: stock/templates/stock/item_base.html:57
-#: stock/templates/stock/item_base.html:234
-#: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:338
-#: templates/js/bom.js:195 templates/js/build.js:420 templates/js/stock.js:892
-#: templates/js/stock.js:1131
+#: stock/templates/stock/item_base.html:238
+#: stock/templates/stock/stock_adjust.html:18 templates/js/barcode.js:367
+#: templates/js/bom.js:195 templates/js/build.js:420 templates/js/stock.js:910
+#: templates/js/stock.js:1149
 msgid "Quantity"
 msgstr ""
 
@@ -402,14 +403,14 @@ msgstr ""
 #: company/models.py:359 company/templates/company/detail.html:23
 #: company/templates/company/supplier_part_base.html:61
 #: company/templates/company/supplier_part_detail.html:27 label/models.py:75
-#: order/templates/order/purchase_order_detail.html:161 part/models.py:671
+#: order/templates/order/purchase_order_detail.html:161 part/models.py:678
 #: part/templates/part/detail.html:51 part/templates/part/set_category.html:14
-#: templates/InvenTree/search.html:147
+#: report/models.py:166 templates/InvenTree/search.html:147
 #: templates/InvenTree/settings/header.html:9 templates/js/bom.js:180
 #: templates/js/bom.js:547 templates/js/build.js:664 templates/js/company.js:56
 #: templates/js/order.js:180 templates/js/order.js:274 templates/js/part.js:188
-#: templates/js/part.js:271 templates/js/part.js:391 templates/js/part.js:572
-#: templates/js/stock.js:511 templates/js/stock.js:873
+#: templates/js/part.js:271 templates/js/part.js:391 templates/js/part.js:586
+#: templates/js/stock.js:512 templates/js/stock.js:891
 msgid "Description"
 msgstr ""
 
@@ -428,16 +429,16 @@ msgstr ""
 
 #: build/models.py:134 build/templates/build/auto_allocate.html:16
 #: build/templates/build/build_base.html:78
-#: build/templates/build/detail.html:24 order/models.py:651
+#: build/templates/build/detail.html:24 order/models.py:652
 #: order/templates/order/order_wizard/select_parts.html:30
 #: order/templates/order/purchase_order_detail.html:148
-#: order/templates/order/receive_parts.html:19 part/models.py:316
+#: order/templates/order/receive_parts.html:19 part/models.py:320
 #: part/templates/part/part_app_base.html:7 part/templates/part/related.html:26
 #: part/templates/part/set_category.html:13 templates/InvenTree/search.html:133
-#: templates/js/barcode.js:336 templates/js/bom.js:153 templates/js/bom.js:532
+#: templates/js/barcode.js:365 templates/js/bom.js:153 templates/js/bom.js:532
 #: templates/js/build.js:669 templates/js/company.js:138
-#: templates/js/part.js:252 templates/js/part.js:357 templates/js/stock.js:485
-#: templates/js/stock.js:1203
+#: templates/js/part.js:252 templates/js/part.js:357 templates/js/stock.js:486
+#: templates/js/stock.js:1221
 msgid "Part"
 msgstr ""
 
@@ -487,7 +488,7 @@ msgstr ""
 msgid "Number of stock items which have been completed"
 msgstr ""
 
-#: build/models.py:186 part/templates/part/part_base.html:155
+#: build/models.py:186 part/templates/part/part_base.html:158
 msgid "Build Status"
 msgstr ""
 
@@ -503,30 +504,30 @@ msgstr ""
 msgid "Batch code for this build output"
 msgstr ""
 
-#: build/models.py:205 order/models.py:436
+#: build/models.py:205 order/models.py:437
 msgid "Target completion date"
 msgstr ""
 
 #: build/models.py:219 build/templates/build/detail.html:89
 #: company/templates/company/supplier_part_base.html:68
 #: company/templates/company/supplier_part_detail.html:24
-#: part/templates/part/detail.html:80 part/templates/part/part_base.html:102
-#: stock/models.py:412 stock/templates/stock/item_base.html:317
+#: part/templates/part/detail.html:80 part/templates/part/part_base.html:105
+#: stock/models.py:412 stock/templates/stock/item_base.html:321
 msgid "External Link"
 msgstr ""
 
-#: build/models.py:220 part/models.py:705 stock/models.py:414
+#: build/models.py:220 part/models.py:712 stock/models.py:414
 msgid "Link to external URL"
 msgstr ""
 
 #: build/models.py:224 build/templates/build/tabs.html:23 company/models.py:366
 #: company/templates/company/tabs.html:33 order/templates/order/po_tabs.html:18
 #: order/templates/order/purchase_order_detail.html:213
-#: order/templates/order/so_tabs.html:23 part/models.py:831
+#: order/templates/order/so_tabs.html:23 part/models.py:838
 #: part/templates/part/tabs.html:73 stock/forms.py:315 stock/forms.py:347
 #: stock/forms.py:375 stock/models.py:484 stock/models.py:1554
-#: stock/templates/stock/tabs.html:26 templates/js/barcode.js:391
-#: templates/js/bom.js:293 templates/js/stock.js:127 templates/js/stock.js:623
+#: stock/templates/stock/tabs.html:26 templates/js/barcode.js:34
+#: templates/js/bom.js:293 templates/js/stock.js:128 templates/js/stock.js:624
 msgid "Notes"
 msgstr ""
 
@@ -534,65 +535,65 @@ msgstr ""
 msgid "Extra build notes"
 msgstr ""
 
-#: build/models.py:610
+#: build/models.py:607
 msgid "No build output specified"
 msgstr ""
 
-#: build/models.py:613
+#: build/models.py:610
 msgid "Build output is already completed"
 msgstr ""
 
-#: build/models.py:616
+#: build/models.py:613
 msgid "Build output does not match Build Order"
 msgstr ""
 
-#: build/models.py:691
+#: build/models.py:688
 msgid "Completed build output"
 msgstr ""
 
-#: build/models.py:933
+#: build/models.py:930
 msgid "BuildItem must be unique for build, stock_item and install_into"
 msgstr ""
 
-#: build/models.py:955
+#: build/models.py:952
 msgid "Build item must specify a build output"
 msgstr ""
 
-#: build/models.py:960
+#: build/models.py:957
 #, python-brace-format
 msgid "Selected stock item not found in BOM for part '{p}'"
 msgstr ""
 
-#: build/models.py:964
+#: build/models.py:961
 #, python-brace-format
 msgid "Allocated quantity ({n}) must not exceed available quantity ({q})"
 msgstr ""
 
-#: build/models.py:971 order/models.py:735
+#: build/models.py:968 order/models.py:736
 msgid "StockItem is over-allocated"
 msgstr ""
 
-#: build/models.py:975 order/models.py:738
+#: build/models.py:972 order/models.py:739
 msgid "Allocation quantity must be greater than zero"
 msgstr ""
 
-#: build/models.py:979
+#: build/models.py:976
 msgid "Quantity must be 1 for serialized stock"
 msgstr ""
 
-#: build/models.py:1019
+#: build/models.py:1016
 msgid "Build to allocate parts"
 msgstr ""
 
-#: build/models.py:1026
+#: build/models.py:1023
 msgid "Source stock item"
 msgstr ""
 
-#: build/models.py:1038
+#: build/models.py:1035
 msgid "Stock quantity to allocate to build"
 msgstr ""
 
-#: build/models.py:1046
+#: build/models.py:1043
 msgid "Destination stock item"
 msgstr ""
 
@@ -658,10 +659,11 @@ msgid ""
 msgstr ""
 
 #: build/templates/build/auto_allocate.html:18 stock/forms.py:345
-#: stock/templates/stock/item_base.html:264
+#: stock/templates/stock/item_base.html:268
 #: stock/templates/stock/stock_adjust.html:17
-#: templates/InvenTree/search.html:183 templates/js/barcode.js:337
-#: templates/js/build.js:434 templates/js/stock.js:597
+#: templates/InvenTree/search.html:183 templates/js/barcode.js:366
+#: templates/js/barcode.js:534 templates/js/build.js:434
+#: templates/js/stock.js:598
 msgid "Location"
 msgstr ""
 
@@ -725,10 +727,10 @@ msgstr ""
 #: build/templates/build/build_base.html:88
 #: build/templates/build/detail.html:57
 #: order/templates/order/receive_parts.html:24
-#: stock/templates/stock/item_base.html:363 templates/InvenTree/search.html:175
-#: templates/js/barcode.js:42 templates/js/build.js:697
+#: stock/templates/stock/item_base.html:367 templates/InvenTree/search.html:175
+#: templates/js/barcode.js:116 templates/js/build.js:697
 #: templates/js/order.js:185 templates/js/order.js:279
-#: templates/js/stock.js:584 templates/js/stock.js:1139
+#: templates/js/stock.js:585 templates/js/stock.js:1157
 msgid "Status"
 msgstr ""
 
@@ -750,13 +752,13 @@ msgid "Progress"
 msgstr ""
 
 #: build/templates/build/build_base.html:120
-#: build/templates/build/detail.html:82 order/models.py:649
+#: build/templates/build/detail.html:82 order/models.py:650
 #: order/templates/order/sales_order_base.html:9
 #: order/templates/order/sales_order_base.html:33
 #: order/templates/order/sales_order_notes.html:10
 #: order/templates/order/sales_order_ship.html:25
 #: part/templates/part/allocation.html:27
-#: stock/templates/stock/item_base.html:258 templates/js/order.js:240
+#: stock/templates/stock/item_base.html:262 templates/js/order.js:240
 msgid "Sales Order"
 msgstr ""
 
@@ -857,8 +859,8 @@ msgid "Destination location not specified"
 msgstr ""
 
 #: build/templates/build/detail.html:68
-#: stock/templates/stock/item_base.html:282 templates/js/stock.js:592
-#: templates/js/stock.js:1146 templates/js/table_filters.js:80
+#: stock/templates/stock/item_base.html:286 templates/js/stock.js:593
+#: templates/js/stock.js:1164 templates/js/table_filters.js:80
 #: templates/js/table_filters.js:161
 msgid "Batch"
 msgstr ""
@@ -1112,233 +1114,242 @@ msgid "Default currency"
 msgstr ""
 
 #: common/models.py:75
-msgid "IPN Regex"
+msgid "Barcode Support"
 msgstr ""
 
 #: common/models.py:76
+msgid "Enable barcode scanner support"
+msgstr ""
+
+#: common/models.py:82
+msgid "IPN Regex"
+msgstr ""
+
+#: common/models.py:83
 msgid "Regular expression pattern for matching Part IPN"
 msgstr ""
 
-#: common/models.py:80
+#: common/models.py:87
 msgid "Allow Duplicate IPN"
 msgstr ""
 
-#: common/models.py:81
+#: common/models.py:88
 msgid "Allow multiple parts to share the same IPN"
 msgstr ""
 
-#: common/models.py:87
+#: common/models.py:94
 msgid "Copy Part BOM Data"
 msgstr ""
 
-#: common/models.py:88
+#: common/models.py:95
 msgid "Copy BOM data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:94
+#: common/models.py:101
 msgid "Copy Part Parameter Data"
 msgstr ""
 
-#: common/models.py:95
+#: common/models.py:102
 msgid "Copy parameter data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:101
+#: common/models.py:108
 msgid "Copy Part Test Data"
 msgstr ""
 
-#: common/models.py:102
+#: common/models.py:109
 msgid "Copy test data by default when duplicating a part"
 msgstr ""
 
-#: common/models.py:108
+#: common/models.py:115
 msgid "Copy Category Parameter Templates"
 msgstr ""
 
-#: common/models.py:109
+#: common/models.py:116
 msgid "Copy category parameter templates when creating a part"
 msgstr ""
 
-#: common/models.py:115 part/templates/part/detail.html:155 stock/forms.py:257
-#: templates/js/table_filters.js:23 templates/js/table_filters.js:270
+#: common/models.py:122 part/templates/part/detail.html:155
+#: report/models.py:159 stock/forms.py:257 templates/js/table_filters.js:23
+#: templates/js/table_filters.js:270
 msgid "Template"
 msgstr ""
 
-#: common/models.py:116
+#: common/models.py:123
 msgid "Parts are templates by default"
 msgstr ""
 
-#: common/models.py:122 part/models.py:794 part/templates/part/detail.html:165
+#: common/models.py:129 part/models.py:801 part/templates/part/detail.html:165
 #: templates/js/table_filters.js:282
 msgid "Assembly"
 msgstr ""
 
-#: common/models.py:123
+#: common/models.py:130
 msgid "Parts can be assembled from other components by default"
 msgstr ""
 
-#: common/models.py:129 part/models.py:800 part/templates/part/detail.html:175
+#: common/models.py:136 part/models.py:807 part/templates/part/detail.html:175
 #: templates/js/table_filters.js:286
 msgid "Component"
 msgstr ""
 
-#: common/models.py:130
+#: common/models.py:137
 msgid "Parts can be used as sub-components by default"
 msgstr ""
 
-#: common/models.py:136 part/models.py:811 part/templates/part/detail.html:195
+#: common/models.py:143 part/models.py:818 part/templates/part/detail.html:195
 msgid "Purchaseable"
 msgstr ""
 
-#: common/models.py:137
+#: common/models.py:144
 msgid "Parts are purchaseable by default"
 msgstr ""
 
-#: common/models.py:143 part/models.py:816 part/templates/part/detail.html:205
+#: common/models.py:150 part/models.py:823 part/templates/part/detail.html:205
 #: templates/js/table_filters.js:294
 msgid "Salable"
 msgstr ""
 
-#: common/models.py:144
+#: common/models.py:151
 msgid "Parts are salable by default"
 msgstr ""
 
-#: common/models.py:150 part/models.py:806 part/templates/part/detail.html:185
+#: common/models.py:157 part/models.py:813 part/templates/part/detail.html:185
 #: templates/js/table_filters.js:31 templates/js/table_filters.js:298
 msgid "Trackable"
 msgstr ""
 
-#: common/models.py:151
+#: common/models.py:158
 msgid "Parts are trackable by default"
 msgstr ""
 
-#: common/models.py:157 part/models.py:826 part/templates/part/detail.html:145
+#: common/models.py:164 part/models.py:833 part/templates/part/detail.html:145
 #: templates/js/table_filters.js:27
 msgid "Virtual"
 msgstr ""
 
-#: common/models.py:158
+#: common/models.py:165
 msgid "Parts are virtual by default"
 msgstr ""
 
-#: common/models.py:164
+#: common/models.py:171
 msgid "Show Quantity in Forms"
 msgstr ""
 
-#: common/models.py:165
+#: common/models.py:172
 msgid "Display available part quantity in some forms"
 msgstr ""
 
-#: common/models.py:171
+#: common/models.py:178
 msgid "Stock Expiry"
 msgstr ""
 
-#: common/models.py:172
+#: common/models.py:179
 msgid "Enable stock expiry functionality"
 msgstr ""
 
-#: common/models.py:178
+#: common/models.py:185
 msgid "Sell Expired Stock"
 msgstr ""
 
-#: common/models.py:179
+#: common/models.py:186
 msgid "Allow sale of expired stock"
 msgstr ""
 
-#: common/models.py:185
+#: common/models.py:192
 msgid "Stock Stale Time"
 msgstr ""
 
-#: common/models.py:186
+#: common/models.py:193
 msgid "Number of days stock items are considered stale before expiring"
 msgstr ""
 
-#: common/models.py:188 part/templates/part/detail.html:116
+#: common/models.py:195 part/templates/part/detail.html:116
 msgid "days"
 msgstr ""
 
-#: common/models.py:193
+#: common/models.py:200
 msgid "Build Expired Stock"
 msgstr ""
 
-#: common/models.py:194
+#: common/models.py:201
 msgid "Allow building with expired stock"
 msgstr ""
 
-#: common/models.py:200
+#: common/models.py:207
 msgid "Stock Ownership Control"
 msgstr ""
 
-#: common/models.py:201
+#: common/models.py:208
 msgid "Enable ownership control over stock locations and items"
 msgstr ""
 
-#: common/models.py:207
+#: common/models.py:214
 msgid "Build Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:208
+#: common/models.py:215
 msgid "Prefix value for build order reference"
 msgstr ""
 
-#: common/models.py:213
+#: common/models.py:220
 msgid "Build Order Reference Regex"
 msgstr ""
 
-#: common/models.py:214
+#: common/models.py:221
 msgid "Regular expression pattern for matching build order reference"
 msgstr ""
 
-#: common/models.py:218
+#: common/models.py:225
 msgid "Sales Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:219
+#: common/models.py:226
 msgid "Prefix value for sales order reference"
 msgstr ""
 
-#: common/models.py:224
+#: common/models.py:231
 msgid "Purchase Order Reference Prefix"
 msgstr ""
 
-#: common/models.py:225
+#: common/models.py:232
 msgid "Prefix value for purchase order reference"
 msgstr ""
 
-#: common/models.py:448
+#: common/models.py:455
 msgid "Settings key (must be unique - case insensitive"
 msgstr ""
 
-#: common/models.py:450
+#: common/models.py:457
 msgid "Settings value"
 msgstr ""
 
-#: common/models.py:507
+#: common/models.py:514
 msgid "Value must be a boolean value"
 msgstr ""
 
-#: common/models.py:517
+#: common/models.py:524
 msgid "Value must be an integer value"
 msgstr ""
 
-#: common/models.py:531
+#: common/models.py:538
 msgid "Key string must be unique"
 msgstr ""
 
-#: common/models.py:604 company/forms.py:113
+#: common/models.py:611 company/forms.py:113
 msgid "Price break quantity"
 msgstr ""
 
-#: common/models.py:612 company/templates/company/supplier_part_pricing.html:80
+#: common/models.py:619 company/templates/company/supplier_part_pricing.html:80
 #: part/templates/part/sale_prices.html:87 templates/js/bom.js:245
 msgid "Price"
 msgstr ""
 
-#: common/models.py:613
+#: common/models.py:620
 msgid "Unit price at specified quantity"
 msgstr ""
 
-#: common/models.py:636
+#: common/models.py:643
 msgid "Default"
 msgstr ""
 
@@ -1440,7 +1451,7 @@ msgid "Currency"
 msgstr ""
 
 #: company/models.py:313 stock/models.py:366
-#: stock/templates/stock/item_base.html:214
+#: stock/templates/stock/item_base.html:218
 msgid "Base Part"
 msgstr ""
 
@@ -1453,7 +1464,7 @@ msgstr ""
 #: company/templates/company/supplier_part_detail.html:21
 #: order/templates/order/order_base.html:89
 #: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:170
-#: stock/templates/stock/item_base.html:324 templates/js/company.js:48
+#: stock/templates/stock/item_base.html:328 templates/js/company.js:48
 #: templates/js/company.js:164 templates/js/order.js:167
 msgid "Supplier"
 msgstr ""
@@ -1492,7 +1503,8 @@ msgstr ""
 msgid "Manufacturer part number"
 msgstr ""
 
-#: company/models.py:353 part/models.py:704 templates/js/company.js:208
+#: company/models.py:353 part/models.py:711 templates/js/company.js:208
+#: templates/js/part.js:451
 msgid "Link"
 msgstr ""
 
@@ -1550,7 +1562,7 @@ msgstr ""
 
 #: company/templates/company/detail.html:62
 #: order/templates/order/sales_order_base.html:89 stock/models.py:401
-#: stock/models.py:402 stock/templates/stock/item_base.html:241
+#: stock/models.py:402 stock/templates/stock/item_base.html:245
 #: templates/js/company.js:40 templates/js/order.js:261
 msgid "Customer"
 msgstr ""
@@ -1566,7 +1578,7 @@ msgstr ""
 
 #: company/templates/company/detail_part.html:18
 #: order/templates/order/purchase_order_detail.html:68
-#: part/templates/part/supplier.html:14 templates/js/stock.js:1023
+#: part/templates/part/supplier.html:14 templates/js/stock.js:1041
 msgid "New Supplier Part"
 msgstr ""
 
@@ -1590,7 +1602,7 @@ msgstr ""
 
 #: company/templates/company/detail_part.html:63
 #: part/templates/part/bom.html:182 part/templates/part/category.html:116
-#: templates/js/stock.js:1017
+#: templates/js/stock.js:1035
 msgid "New Part"
 msgstr ""
 
@@ -1682,12 +1694,12 @@ msgstr ""
 
 #: company/templates/company/supplier_part_base.html:6
 #: company/templates/company/supplier_part_base.html:19 stock/models.py:375
-#: stock/templates/stock/item_base.html:329 templates/js/company.js:180
+#: stock/templates/stock/item_base.html:333 templates/js/company.js:180
 msgid "Supplier Part"
 msgstr ""
 
 #: company/templates/company/supplier_part_base.html:26
-#: part/templates/part/orders.html:14 part/templates/part/part_base.html:66
+#: part/templates/part/orders.html:14 part/templates/part/part_base.html:69
 msgid "Order part"
 msgstr ""
 
@@ -1754,7 +1766,7 @@ msgstr ""
 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:18
 #: stock/templates/stock/location.html:29 templates/InvenTree/search.html:155
 #: templates/InvenTree/settings/tabs.html:25 templates/js/part.js:192
-#: templates/js/part.js:418 templates/js/stock.js:519 templates/navbar.html:22
+#: templates/js/part.js:418 templates/js/stock.js:520 templates/navbar.html:22
 msgid "Stock"
 msgstr ""
 
@@ -1763,7 +1775,7 @@ msgid "Orders"
 msgstr ""
 
 #: company/templates/company/tabs.html:9
-#: order/templates/order/receive_parts.html:14 part/models.py:317
+#: order/templates/order/receive_parts.html:14 part/models.py:321
 #: part/templates/part/cat_link.html:7 part/templates/part/category.html:94
 #: part/templates/part/category_tabs.html:6
 #: templates/InvenTree/settings/tabs.html:22 templates/navbar.html:19
@@ -1836,7 +1848,7 @@ msgstr ""
 msgid "Edit Supplier Part"
 msgstr ""
 
-#: company/views.py:295 templates/js/stock.js:1024
+#: company/views.py:295 templates/js/stock.js:1042
 msgid "Create new Supplier Part"
 msgstr ""
 
@@ -1884,7 +1896,7 @@ msgstr ""
 msgid "Label template file"
 msgstr ""
 
-#: label/models.py:90 report/models.py:162
+#: label/models.py:90 report/models.py:172
 msgid "Enabled"
 msgstr ""
 
@@ -1896,7 +1908,7 @@ msgstr ""
 msgid "Query filters (comma-separated list of key=value pairs"
 msgstr ""
 
-#: label/models.py:138 label/models.py:191
+#: label/models.py:138 label/models.py:191 report/models.py:194
 msgid "Filters"
 msgstr ""
 
@@ -1933,7 +1945,7 @@ msgstr ""
 msgid "Enter sales order number"
 msgstr ""
 
-#: order/forms.py:140 order/models.py:437
+#: order/forms.py:140 order/models.py:438
 msgid ""
 "Target date for order completion. Order will be overdue after this date."
 msgstr ""
@@ -1954,7 +1966,7 @@ msgstr ""
 msgid "Order notes"
 msgstr ""
 
-#: order/models.py:171 order/models.py:430
+#: order/models.py:171 order/models.py:431
 msgid "Purchase order status"
 msgstr ""
 
@@ -1991,7 +2003,7 @@ msgstr ""
 msgid "Date order was completed"
 msgstr ""
 
-#: order/models.py:230 order/models.py:328 part/views.py:1506
+#: order/models.py:230 order/models.py:329 part/views.py:1506
 #: stock/models.py:265 stock/models.py:881
 msgid "Quantity must be greater than zero"
 msgstr ""
@@ -2000,78 +2012,78 @@ msgstr ""
 msgid "Part supplier must match PO supplier"
 msgstr ""
 
-#: order/models.py:323
+#: order/models.py:324
 msgid "Lines can only be received against an order marked as 'Placed'"
 msgstr ""
 
-#: order/models.py:426
+#: order/models.py:427
 msgid "Company to which the items are being sold"
 msgstr ""
 
-#: order/models.py:432
+#: order/models.py:433
 msgid "Customer order reference code"
 msgstr ""
 
-#: order/models.py:490
+#: order/models.py:491
 msgid "SalesOrder cannot be shipped as it is not currently pending"
 msgstr ""
 
-#: order/models.py:577
+#: order/models.py:578
 msgid "Item quantity"
 msgstr ""
 
-#: order/models.py:579
+#: order/models.py:580
 msgid "Line item reference"
 msgstr ""
 
-#: order/models.py:581
+#: order/models.py:582
 msgid "Line item notes"
 msgstr ""
 
-#: order/models.py:607 order/templates/order/order_base.html:9
+#: order/models.py:608 order/templates/order/order_base.html:9
 #: order/templates/order/order_base.html:24
-#: stock/templates/stock/item_base.html:296 templates/js/order.js:145
+#: stock/templates/stock/item_base.html:300 templates/js/order.js:145
 msgid "Purchase Order"
 msgstr ""
 
-#: order/models.py:620
+#: order/models.py:621
 msgid "Supplier part"
 msgstr ""
 
-#: order/models.py:623
+#: order/models.py:624
 msgid "Number of items received"
 msgstr ""
 
-#: order/models.py:630 stock/models.py:494
-#: stock/templates/stock/item_base.html:303
+#: order/models.py:631 stock/models.py:494
+#: stock/templates/stock/item_base.html:307
 msgid "Purchase Price"
 msgstr ""
 
-#: order/models.py:631
+#: order/models.py:632
 msgid "Unit purchase price"
 msgstr ""
 
-#: order/models.py:726
+#: order/models.py:727
 msgid "Cannot allocate stock item to a line with a different part"
 msgstr ""
 
-#: order/models.py:728
+#: order/models.py:729
 msgid "Cannot allocate stock to a line without a part"
 msgstr ""
 
-#: order/models.py:731
+#: order/models.py:732
 msgid "Allocation quantity cannot exceed stock quantity"
 msgstr ""
 
-#: order/models.py:741
+#: order/models.py:742
 msgid "Quantity must be 1 for serialized stock item"
 msgstr ""
 
-#: order/models.py:757
+#: order/models.py:758
 msgid "Select stock item to allocate"
 msgstr ""
 
-#: order/models.py:760
+#: order/models.py:761
 msgid "Enter stock allocation quantity"
 msgstr ""
 
@@ -2201,7 +2213,7 @@ msgstr ""
 #: order/templates/order/purchase_order_detail.html:39
 #: order/templates/order/purchase_order_detail.html:119
 #: part/templates/part/category.html:173 part/templates/part/category.html:215
-#: templates/js/stock.js:657 templates/js/stock.js:1029
+#: templates/js/stock.js:661 templates/js/stock.js:1047
 msgid "New Location"
 msgstr ""
 
@@ -2246,7 +2258,7 @@ msgid "Select parts to receive against this order"
 msgstr ""
 
 #: order/templates/order/receive_parts.html:21
-#: part/templates/part/part_base.html:145 templates/js/part.js:434
+#: part/templates/part/part_base.html:148 templates/js/part.js:434
 msgid "On Order"
 msgstr ""
 
@@ -2287,7 +2299,7 @@ msgstr ""
 
 #: order/templates/order/sales_order_detail.html:72
 #: order/templates/order/sales_order_detail.html:154 stock/models.py:406
-#: stock/templates/stock/item_base.html:228 templates/js/build.js:418
+#: stock/templates/stock/item_base.html:232 templates/js/build.js:418
 msgid "Serial Number"
 msgstr ""
 
@@ -2497,12 +2509,12 @@ msgstr ""
 msgid "Remove allocation"
 msgstr ""
 
-#: part/bom.py:138 part/models.py:722 part/templates/part/category.html:61
+#: part/bom.py:138 part/models.py:729 part/templates/part/category.html:61
 #: part/templates/part/detail.html:87
 msgid "Default Location"
 msgstr ""
 
-#: part/bom.py:139 part/templates/part/part_base.html:118
+#: part/bom.py:139 part/templates/part/part_base.html:121
 msgid "Available Stock"
 msgstr ""
 
@@ -2567,7 +2579,7 @@ msgstr ""
 msgid "Include part supplier data in exported BOM"
 msgstr ""
 
-#: part/forms.py:102 part/models.py:1781
+#: part/forms.py:102 part/models.py:1788
 msgid "Parent Part"
 msgstr ""
 
@@ -2639,313 +2651,313 @@ msgstr ""
 msgid "Input quantity for price calculation"
 msgstr ""
 
-#: part/models.py:68
+#: part/models.py:72
 msgid "Default location for parts in this category"
 msgstr ""
 
-#: part/models.py:71
+#: part/models.py:75
 msgid "Default keywords for parts in this category"
 msgstr ""
 
-#: part/models.py:77 part/models.py:1826
+#: part/models.py:81 part/models.py:1833
 #: part/templates/part/part_app_base.html:9
 msgid "Part Category"
 msgstr ""
 
-#: part/models.py:78 part/templates/part/category.html:18
+#: part/models.py:82 part/templates/part/category.html:18
 #: part/templates/part/category.html:89 templates/stats.html:39
 #: users/models.py:32
 msgid "Part Categories"
 msgstr ""
 
-#: part/models.py:409 part/models.py:419
+#: part/models.py:416 part/models.py:426
 #, python-brace-format
 msgid "Part '{p1}' is  used in BOM for '{p2}' (recursive)"
 msgstr ""
 
-#: part/models.py:516
+#: part/models.py:523
 msgid "Next available serial numbers are"
 msgstr ""
 
-#: part/models.py:520
+#: part/models.py:527
 msgid "Next available serial number is"
 msgstr ""
 
-#: part/models.py:525
+#: part/models.py:532
 msgid "Most recent serial number is"
 msgstr ""
 
-#: part/models.py:604
+#: part/models.py:611
 msgid "Duplicate IPN not allowed in part settings"
 msgstr ""
 
-#: part/models.py:615
+#: part/models.py:622
 msgid "Part must be unique for name, IPN and revision"
 msgstr ""
 
-#: part/models.py:646 part/templates/part/detail.html:19
+#: part/models.py:653 part/templates/part/detail.html:19
 msgid "Part name"
 msgstr ""
 
-#: part/models.py:653
+#: part/models.py:660
 msgid "Is Template"
 msgstr ""
 
-#: part/models.py:654
+#: part/models.py:661
 msgid "Is this part a template part?"
 msgstr ""
 
-#: part/models.py:665
+#: part/models.py:672
 msgid "Is this part a variant of another part?"
 msgstr ""
 
-#: part/models.py:666 part/templates/part/detail.html:57
+#: part/models.py:673 part/templates/part/detail.html:57
 msgid "Variant Of"
 msgstr ""
 
-#: part/models.py:672
+#: part/models.py:679
 msgid "Part description"
 msgstr ""
 
-#: part/models.py:677 part/templates/part/category.html:68
+#: part/models.py:684 part/templates/part/category.html:68
 #: part/templates/part/detail.html:64
 msgid "Keywords"
 msgstr ""
 
-#: part/models.py:678
+#: part/models.py:685
 msgid "Part keywords to improve visibility in search results"
 msgstr ""
 
-#: part/models.py:685 part/templates/part/detail.html:70
+#: part/models.py:692 part/templates/part/detail.html:70
 #: part/templates/part/set_category.html:15 templates/js/part.js:405
 msgid "Category"
 msgstr ""
 
-#: part/models.py:686
+#: part/models.py:693
 msgid "Part category"
 msgstr ""
 
-#: part/models.py:691 part/templates/part/detail.html:25
-#: part/templates/part/part_base.html:95 templates/js/part.js:180
+#: part/models.py:698 part/templates/part/detail.html:25
+#: part/templates/part/part_base.html:98 templates/js/part.js:180
 msgid "IPN"
 msgstr ""
 
-#: part/models.py:692
+#: part/models.py:699
 msgid "Internal Part Number"
 msgstr ""
 
-#: part/models.py:698
+#: part/models.py:705
 msgid "Part revision or version number"
 msgstr ""
 
-#: part/models.py:699 part/templates/part/detail.html:32
+#: part/models.py:706 part/templates/part/detail.html:32
 #: templates/js/part.js:184
 msgid "Revision"
 msgstr ""
 
-#: part/models.py:720
+#: part/models.py:727
 msgid "Where is this item normally stored?"
 msgstr ""
 
-#: part/models.py:767 part/templates/part/detail.html:94
+#: part/models.py:774 part/templates/part/detail.html:94
 msgid "Default Supplier"
 msgstr ""
 
-#: part/models.py:768
+#: part/models.py:775
 msgid "Default supplier part"
 msgstr ""
 
-#: part/models.py:775
+#: part/models.py:782
 msgid "Default Expiry"
 msgstr ""
 
-#: part/models.py:776
+#: part/models.py:783
 msgid "Expiry time (in days) for stock items of this part"
 msgstr ""
 
-#: part/models.py:781 part/templates/part/detail.html:108
+#: part/models.py:788 part/templates/part/detail.html:108
 msgid "Minimum Stock"
 msgstr ""
 
-#: part/models.py:782
+#: part/models.py:789
 msgid "Minimum allowed stock level"
 msgstr ""
 
-#: part/models.py:788 part/templates/part/detail.html:102
+#: part/models.py:795 part/templates/part/detail.html:102
 #: part/templates/part/params.html:26
 msgid "Units"
 msgstr ""
 
-#: part/models.py:789
+#: part/models.py:796
 msgid "Stock keeping units for this part"
 msgstr ""
 
-#: part/models.py:795
+#: part/models.py:802
 msgid "Can this part be built from other parts?"
 msgstr ""
 
-#: part/models.py:801
+#: part/models.py:808
 msgid "Can this part be used to build other parts?"
 msgstr ""
 
-#: part/models.py:807
+#: part/models.py:814
 msgid "Does this part have tracking for unique items?"
 msgstr ""
 
-#: part/models.py:812
+#: part/models.py:819
 msgid "Can this part be purchased from external suppliers?"
 msgstr ""
 
-#: part/models.py:817
+#: part/models.py:824
 msgid "Can this part be sold to customers?"
 msgstr ""
 
-#: part/models.py:821 part/templates/part/detail.html:222
+#: part/models.py:828 part/templates/part/detail.html:222
 #: templates/js/table_filters.js:19 templates/js/table_filters.js:55
 #: templates/js/table_filters.js:196 templates/js/table_filters.js:265
 msgid "Active"
 msgstr ""
 
-#: part/models.py:822
+#: part/models.py:829
 msgid "Is this part active?"
 msgstr ""
 
-#: part/models.py:827
+#: part/models.py:834
 msgid "Is this a virtual part, such as a software product or license?"
 msgstr ""
 
-#: part/models.py:832
+#: part/models.py:839
 msgid "Part notes - supports Markdown formatting"
 msgstr ""
 
-#: part/models.py:835
+#: part/models.py:842
 msgid "Stored BOM checksum"
 msgstr ""
 
-#: part/models.py:1654
+#: part/models.py:1661
 msgid "Test templates can only be created for trackable parts"
 msgstr ""
 
-#: part/models.py:1671
+#: part/models.py:1678
 msgid "Test with this name already exists for this part"
 msgstr ""
 
-#: part/models.py:1690 templates/js/part.js:567 templates/js/stock.js:103
+#: part/models.py:1697 templates/js/part.js:581 templates/js/stock.js:104
 msgid "Test Name"
 msgstr ""
 
-#: part/models.py:1691
+#: part/models.py:1698
 msgid "Enter a name for the test"
 msgstr ""
 
-#: part/models.py:1696
+#: part/models.py:1703
 msgid "Test Description"
 msgstr ""
 
-#: part/models.py:1697
+#: part/models.py:1704
 msgid "Enter description for this test"
 msgstr ""
 
-#: part/models.py:1702 templates/js/part.js:576
+#: part/models.py:1709 templates/js/part.js:590
 #: templates/js/table_filters.js:182
 msgid "Required"
 msgstr ""
 
-#: part/models.py:1703
+#: part/models.py:1710
 msgid "Is this test required to pass?"
 msgstr ""
 
-#: part/models.py:1708 templates/js/part.js:584
+#: part/models.py:1715 templates/js/part.js:598
 msgid "Requires Value"
 msgstr ""
 
-#: part/models.py:1709
+#: part/models.py:1716
 msgid "Does this test require a value when adding a test result?"
 msgstr ""
 
-#: part/models.py:1714 templates/js/part.js:591
+#: part/models.py:1721 templates/js/part.js:605
 msgid "Requires Attachment"
 msgstr ""
 
-#: part/models.py:1715
+#: part/models.py:1722
 msgid "Does this test require a file attachment when adding a test result?"
 msgstr ""
 
-#: part/models.py:1748
+#: part/models.py:1755
 msgid "Parameter template name must be unique"
 msgstr ""
 
-#: part/models.py:1753
+#: part/models.py:1760
 msgid "Parameter Name"
 msgstr ""
 
-#: part/models.py:1755
+#: part/models.py:1762
 msgid "Parameter Units"
 msgstr ""
 
-#: part/models.py:1783 part/models.py:1831
+#: part/models.py:1790 part/models.py:1838
 #: templates/InvenTree/settings/category.html:62
 msgid "Parameter Template"
 msgstr ""
 
-#: part/models.py:1785
+#: part/models.py:1792
 msgid "Parameter Value"
 msgstr ""
 
-#: part/models.py:1835
+#: part/models.py:1842
 msgid "Default Parameter Value"
 msgstr ""
 
-#: part/models.py:1862
+#: part/models.py:1869
 msgid "Select parent part"
 msgstr ""
 
-#: part/models.py:1870
+#: part/models.py:1877
 msgid "Select part to be used in BOM"
 msgstr ""
 
-#: part/models.py:1876
+#: part/models.py:1883
 msgid "BOM quantity for this BOM item"
 msgstr ""
 
-#: part/models.py:1878
+#: part/models.py:1885
 msgid "This BOM item is optional"
 msgstr ""
 
-#: part/models.py:1881
+#: part/models.py:1888
 msgid "Estimated build wastage quantity (absolute or percentage)"
 msgstr ""
 
-#: part/models.py:1884
+#: part/models.py:1891
 msgid "BOM item reference"
 msgstr ""
 
-#: part/models.py:1887
+#: part/models.py:1894
 msgid "BOM item notes"
 msgstr ""
 
-#: part/models.py:1889
+#: part/models.py:1896
 msgid "BOM line checksum"
 msgstr ""
 
-#: part/models.py:1960 part/views.py:1512 part/views.py:1564
+#: part/models.py:1967 part/views.py:1512 part/views.py:1564
 #: stock/models.py:255
 msgid "Quantity must be integer value for trackable parts"
 msgstr ""
 
-#: part/models.py:1969 part/models.py:1971
+#: part/models.py:1976 part/models.py:1978
 msgid "Sub part must be specified"
 msgstr ""
 
-#: part/models.py:1974
+#: part/models.py:1981
 msgid "BOM Item"
 msgstr ""
 
-#: part/models.py:2095
+#: part/models.py:2102
 msgid "Select Related Part"
 msgstr ""
 
-#: part/models.py:2127
+#: part/models.py:2134
 msgid ""
 "Error creating relationship: check that the part is not related to itself "
 "and that the relationship is unique"
@@ -2966,9 +2978,9 @@ msgstr ""
 #: part/templates/part/allocation.html:45
 #: stock/templates/stock/item_base.html:8
 #: stock/templates/stock/item_base.html:89
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:315
 #: stock/templates/stock/stock_adjust.html:16 templates/js/build.js:751
-#: templates/js/stock.js:862 templates/js/stock.js:1122
+#: templates/js/stock.js:880 templates/js/stock.js:1140
 msgid "Stock Item"
 msgstr ""
 
@@ -3054,7 +3066,7 @@ msgid "All selected BOM items will be deleted"
 msgstr ""
 
 #: part/templates/part/bom.html:183 part/views.py:594
-#: templates/js/stock.js:1018
+#: templates/js/stock.js:1036
 msgid "Create New Part"
 msgstr ""
 
@@ -3203,7 +3215,7 @@ msgstr ""
 msgid "Export Data"
 msgstr ""
 
-#: part/templates/part/category.html:174 templates/js/stock.js:658
+#: part/templates/part/category.html:174 templates/js/stock.js:662
 msgid "Create new location"
 msgstr ""
 
@@ -3348,7 +3360,7 @@ msgid "New Parameter"
 msgstr ""
 
 #: part/templates/part/params.html:25 stock/models.py:1541
-#: templates/InvenTree/settings/header.html:8 templates/js/stock.js:123
+#: templates/InvenTree/settings/header.html:8 templates/js/stock.js:124
 msgid "Value"
 msgstr ""
 
@@ -3382,65 +3394,65 @@ msgstr ""
 msgid "Star this part"
 msgstr ""
 
-#: part/templates/part/part_base.html:49
-#: stock/templates/stock/item_base.html:125
-#: stock/templates/stock/location.html:43
-msgid "Barcode actions"
-msgstr ""
-
 #: part/templates/part/part_base.html:51
 #: stock/templates/stock/item_base.html:127
 #: stock/templates/stock/location.html:45
+msgid "Barcode actions"
+msgstr ""
+
+#: part/templates/part/part_base.html:53
+#: stock/templates/stock/item_base.html:129
+#: stock/templates/stock/location.html:47
 msgid "Show QR Code"
 msgstr ""
 
-#: part/templates/part/part_base.html:52
-#: stock/templates/stock/item_base.html:143
-#: stock/templates/stock/location.html:46
+#: part/templates/part/part_base.html:54
+#: stock/templates/stock/item_base.html:147
+#: stock/templates/stock/location.html:48
 msgid "Print Label"
 msgstr ""
 
-#: part/templates/part/part_base.html:56
+#: part/templates/part/part_base.html:59
 msgid "Show pricing information"
 msgstr ""
 
-#: part/templates/part/part_base.html:60
+#: part/templates/part/part_base.html:63
 msgid "Count part stock"
 msgstr ""
 
-#: part/templates/part/part_base.html:75
+#: part/templates/part/part_base.html:78
 msgid "Part actions"
 msgstr ""
 
-#: part/templates/part/part_base.html:78
+#: part/templates/part/part_base.html:81
 msgid "Duplicate part"
 msgstr ""
 
-#: part/templates/part/part_base.html:81
+#: part/templates/part/part_base.html:84
 msgid "Edit part"
 msgstr ""
 
-#: part/templates/part/part_base.html:84
+#: part/templates/part/part_base.html:87
 msgid "Delete part"
 msgstr ""
 
-#: part/templates/part/part_base.html:124 templates/js/table_filters.js:121
+#: part/templates/part/part_base.html:127 templates/js/table_filters.js:121
 msgid "In Stock"
 msgstr ""
 
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:134
 msgid "Allocated to Build Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:138
+#: part/templates/part/part_base.html:141
 msgid "Allocated to Sales Orders"
 msgstr ""
 
-#: part/templates/part/part_base.html:160 templates/js/bom.js:260
+#: part/templates/part/part_base.html:163 templates/js/bom.js:260
 msgid "Can Build"
 msgstr ""
 
-#: part/templates/part/part_base.html:166
+#: part/templates/part/part_base.html:169
 msgid "Underway"
 msgstr ""
 
@@ -3533,7 +3545,7 @@ msgstr ""
 msgid "Used In"
 msgstr ""
 
-#: part/templates/part/tabs.html:61 stock/templates/stock/item_base.html:369
+#: part/templates/part/tabs.html:61 stock/templates/stock/item_base.html:373
 msgid "Tests"
 msgstr ""
 
@@ -3782,31 +3794,31 @@ msgstr ""
 msgid "Confim BOM item deletion"
 msgstr ""
 
-#: report/models.py:147
+#: report/models.py:153
 msgid "Template name"
 msgstr ""
 
-#: report/models.py:153
+#: report/models.py:160
 msgid "Report template file"
 msgstr ""
 
-#: report/models.py:157
+#: report/models.py:167
 msgid "Report template description"
 msgstr ""
 
-#: report/models.py:161
+#: report/models.py:173
 msgid "Report template is enabled"
 msgstr ""
 
-#: report/models.py:168
+#: report/models.py:195
 msgid "Part query filters (comma-separated list of key=value pairs)"
 msgstr ""
 
-#: report/models.py:230
+#: report/models.py:244
 msgid "Report asset file"
 msgstr ""
 
-#: report/models.py:233
+#: report/models.py:247
 msgid "Asset file description"
 msgstr ""
 
@@ -3927,7 +3939,7 @@ msgstr ""
 msgid "Where is this stock item located?"
 msgstr ""
 
-#: stock/models.py:389 stock/templates/stock/item_base.html:249
+#: stock/models.py:389 stock/templates/stock/item_base.html:253
 msgid "Installed In"
 msgstr ""
 
@@ -3967,8 +3979,8 @@ msgstr ""
 msgid "Destination Sales Order"
 msgstr ""
 
-#: stock/models.py:461 stock/templates/stock/item_base.html:336
-#: templates/js/stock.js:612
+#: stock/models.py:461 stock/templates/stock/item_base.html:340
+#: templates/js/stock.js:613
 msgid "Expiry Date"
 msgstr ""
 
@@ -4162,133 +4174,137 @@ msgid ""
 msgstr ""
 
 #: stock/templates/stock/item_base.html:91
-#: stock/templates/stock/item_base.html:340 templates/js/table_filters.js:111
+#: stock/templates/stock/item_base.html:344 templates/js/table_filters.js:111
 msgid "Expired"
 msgstr ""
 
 #: stock/templates/stock/item_base.html:95
-#: stock/templates/stock/item_base.html:342 templates/js/table_filters.js:116
+#: stock/templates/stock/item_base.html:346 templates/js/table_filters.js:116
 msgid "Stale"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:130 templates/js/barcode.js:283
-#: templates/js/barcode.js:288
+#: stock/templates/stock/item_base.html:132 templates/js/barcode.js:312
+#: templates/js/barcode.js:317
 msgid "Unlink Barcode"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:132
+#: stock/templates/stock/item_base.html:134
 msgid "Link Barcode"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:140
+#: stock/templates/stock/item_base.html:136 templates/stock_table.html:31
+msgid "Scan to Location"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:144
 msgid "Printing actions"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:146
+#: stock/templates/stock/item_base.html:150
 #: stock/templates/stock/item_tests.html:25
 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:57 templates/stock_table.html:40
+#: stock/templates/stock/item_base.html:164
+#: stock/templates/stock/location.html:60 templates/stock_table.html:53
 msgid "Count stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:161 templates/stock_table.html:38
+#: stock/templates/stock/item_base.html:165 templates/stock_table.html:51
 msgid "Add stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:162 templates/stock_table.html:39
+#: stock/templates/stock/item_base.html:166 templates/stock_table.html:52
 msgid "Remove stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:164
+#: stock/templates/stock/item_base.html:168
 msgid "Transfer stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:166
+#: stock/templates/stock/item_base.html:170
 msgid "Serialize stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:170
+#: stock/templates/stock/item_base.html:174
 msgid "Assign to customer"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:173
+#: stock/templates/stock/item_base.html:177
 msgid "Return to stock"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:177 templates/js/stock.js:1159
+#: stock/templates/stock/item_base.html:181 templates/js/stock.js:1177
 msgid "Uninstall stock item"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:177
+#: stock/templates/stock/item_base.html:181
 msgid "Uninstall"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:186
-#: stock/templates/stock/location.html:54
+#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/location.html:57
 msgid "Stock actions"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:189
+#: stock/templates/stock/item_base.html:193
 msgid "Convert to variant"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:196
 msgid "Duplicate stock item"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:194
+#: stock/templates/stock/item_base.html:198
 msgid "Edit stock item"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:197
+#: stock/templates/stock/item_base.html:201
 msgid "Delete stock item"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:209
+#: stock/templates/stock/item_base.html:213
 msgid "Stock Item Details"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:268 templates/js/build.js:442
+#: stock/templates/stock/item_base.html:272 templates/js/build.js:442
 msgid "No location set"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:275
+#: stock/templates/stock/item_base.html:279
 msgid "Barcode Identifier"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:289 templates/js/build.js:642
+#: stock/templates/stock/item_base.html:293 templates/js/build.js:642
 #: templates/navbar.html:25
 msgid "Build"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:310
+#: stock/templates/stock/item_base.html:314
 msgid "Parent Item"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:340
+#: stock/templates/stock/item_base.html:344
 msgid "This StockItem expired on"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:342
+#: stock/templates/stock/item_base.html:346
 msgid "This StockItem expires on"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:349 templates/js/stock.js:618
+#: stock/templates/stock/item_base.html:353 templates/js/stock.js:619
 msgid "Last Updated"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:354
+#: stock/templates/stock/item_base.html:358
 msgid "Last Stocktake"
 msgstr ""
 
-#: stock/templates/stock/item_base.html:358
+#: stock/templates/stock/item_base.html:362
 msgid "No stocktake performed"
 msgstr ""
 
@@ -4354,50 +4370,50 @@ msgstr ""
 msgid "All stock items"
 msgstr ""
 
-#: stock/templates/stock/location.html:47
+#: stock/templates/stock/location.html:49
 msgid "Check-in Items"
 msgstr ""
 
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:66
 msgid "Location actions"
 msgstr ""
 
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:68
 msgid "Edit location"
 msgstr ""
 
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:70
 msgid "Delete location"
 msgstr ""
 
-#: stock/templates/stock/location.html:78
+#: stock/templates/stock/location.html:81
 msgid "Location Details"
 msgstr ""
 
-#: stock/templates/stock/location.html:83
+#: stock/templates/stock/location.html:86
 msgid "Location Path"
 msgstr ""
 
-#: stock/templates/stock/location.html:88
+#: stock/templates/stock/location.html:91
 msgid "Location Description"
 msgstr ""
 
-#: stock/templates/stock/location.html:93
+#: stock/templates/stock/location.html:96
 msgid "Sublocations"
 msgstr ""
 
-#: stock/templates/stock/location.html:98
-#: stock/templates/stock/location.html:113
+#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:116
 #: templates/InvenTree/search_stock_items.html:6 templates/stats.html:48
 #: templates/stats.html:57 users/models.py:35
 msgid "Stock Items"
 msgstr ""
 
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:106
 msgid "Stock Details"
 msgstr ""
 
-#: stock/templates/stock/location.html:108
+#: stock/templates/stock/location.html:111
 #: templates/InvenTree/search_stock_location.html:6 templates/stats.html:52
 #: users/models.py:34
 msgid "Stock Locations"
@@ -4698,11 +4714,11 @@ msgstr ""
 msgid "Enter a search query"
 msgstr ""
 
-#: templates/InvenTree/search.html:191 templates/js/stock.js:300
+#: templates/InvenTree/search.html:191 templates/js/stock.js:301
 msgid "Shipped to customer"
 msgstr ""
 
-#: templates/InvenTree/search.html:194 templates/js/stock.js:310
+#: templates/InvenTree/search.html:194 templates/js/stock.js:311
 msgid "No stock location set"
 msgstr ""
 
@@ -4744,6 +4760,10 @@ msgstr ""
 msgid "Global InvenTree Settings"
 msgstr ""
 
+#: templates/InvenTree/settings/global.html:24
+msgid "Barcode Settings"
+msgstr ""
+
 #: templates/InvenTree/settings/header.html:7
 msgid "Setting"
 msgstr ""
@@ -4789,7 +4809,7 @@ msgstr ""
 msgid "Stock Settings"
 msgstr ""
 
-#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:33
+#: templates/InvenTree/settings/stock.html:13 templates/stock_table.html:46
 msgid "Stock Options"
 msgstr ""
 
@@ -4940,71 +4960,87 @@ msgstr ""
 msgid "Enter barcode data"
 msgstr ""
 
-#: templates/js/barcode.js:42 templates/js/modals.js:856
-msgid "Invalid server response"
+#: templates/js/barcode.js:30
+msgid "Enter optional notes for stock transfer"
 msgstr ""
 
-#: templates/js/barcode.js:143
-msgid "Scan barcode data below"
+#: templates/js/barcode.js:40
+msgid "Enter notes"
 msgstr ""
 
-#: templates/js/barcode.js:217 templates/js/barcode.js:263
+#: templates/js/barcode.js:68
+msgid "Server error"
+msgstr ""
+
+#: templates/js/barcode.js:89
 msgid "Unknown response from server"
 msgstr ""
 
-#: templates/js/barcode.js:239
+#: templates/js/barcode.js:116 templates/js/modals.js:856
+msgid "Invalid server response"
+msgstr ""
+
+#: templates/js/barcode.js:215
+msgid "Scan barcode data below"
+msgstr ""
+
+#: templates/js/barcode.js:273
+msgid "No URL in response"
+msgstr ""
+
+#: templates/js/barcode.js:291
 msgid "Link Barcode to Stock Item"
 msgstr ""
 
-#: templates/js/barcode.js:285
+#: templates/js/barcode.js:314
 msgid ""
 "This will remove the association between this stock item and the barcode"
 msgstr ""
 
-#: templates/js/barcode.js:291
+#: templates/js/barcode.js:320
 msgid "Unlink"
 msgstr ""
 
-#: templates/js/barcode.js:350
+#: templates/js/barcode.js:379
 msgid "Remove stock item"
 msgstr ""
 
-#: templates/js/barcode.js:397
-msgid "Enter notes"
-msgstr ""
-
-#: templates/js/barcode.js:399
-msgid "Enter optional notes for stock transfer"
-msgstr ""
-
-#: templates/js/barcode.js:404
+#: templates/js/barcode.js:421
 msgid "Check Stock Items into Location"
 msgstr ""
 
-#: templates/js/barcode.js:408
+#: templates/js/barcode.js:425 templates/js/barcode.js:550
 msgid "Check In"
 msgstr ""
 
-#: templates/js/barcode.js:466
-msgid "Server error"
+#: templates/js/barcode.js:465 templates/js/barcode.js:589
+msgid "Error transferring stock"
 msgstr ""
 
-#: templates/js/barcode.js:485
+#: templates/js/barcode.js:484
 msgid "Stock Item already scanned"
 msgstr ""
 
-#: templates/js/barcode.js:489
+#: templates/js/barcode.js:488
 msgid "Stock Item already in this location"
 msgstr ""
 
-#: templates/js/barcode.js:496
+#: templates/js/barcode.js:495
 msgid "Added stock item"
 msgstr ""
 
-#: templates/js/barcode.js:503
+#: templates/js/barcode.js:502
 msgid "Barcode does not match Stock Item"
 msgstr ""
 
+#: templates/js/barcode.js:545
+msgid "Check Into Location"
+msgstr ""
+
+#: templates/js/barcode.js:608
+msgid "Barcode does not match a valid location"
+msgstr ""
+
 #: templates/js/bom.js:165
 msgid "Open subassembly"
 msgstr ""
@@ -5069,7 +5105,7 @@ msgstr ""
 msgid "Delete build output"
 msgstr ""
 
-#: templates/js/build.js:209 templates/stock_table.html:18
+#: templates/js/build.js:209 templates/stock_table.html:20
 msgid "New Stock Item"
 msgstr ""
 
@@ -5085,7 +5121,7 @@ msgstr ""
 msgid "Build stock"
 msgstr ""
 
-#: templates/js/build.js:582 templates/stock_table.html:42
+#: templates/js/build.js:582 templates/stock_table.html:55
 msgid "Order stock"
 msgstr ""
 
@@ -5271,7 +5307,7 @@ msgstr ""
 msgid "Order is overdue"
 msgstr ""
 
-#: templates/js/order.js:193 templates/js/stock.js:844
+#: templates/js/order.js:193 templates/js/stock.js:862
 msgid "Date"
 msgstr ""
 
@@ -5303,12 +5339,12 @@ msgstr ""
 msgid "No variants found"
 msgstr ""
 
-#: templates/js/part.js:291 templates/js/part.js:457
+#: templates/js/part.js:291 templates/js/part.js:471
 msgid "No parts found"
 msgstr ""
 
-#: templates/js/part.js:343 templates/js/stock.js:473
-#: templates/js/stock.js:1191
+#: templates/js/part.js:343 templates/js/stock.js:474
+#: templates/js/stock.js:1209
 msgid "Select"
 msgstr ""
 
@@ -5324,27 +5360,27 @@ msgstr ""
 msgid "Building"
 msgstr ""
 
-#: templates/js/part.js:517
+#: templates/js/part.js:531
 msgid "YES"
 msgstr ""
 
-#: templates/js/part.js:519
+#: templates/js/part.js:533
 msgid "NO"
 msgstr ""
 
-#: templates/js/part.js:553
+#: templates/js/part.js:567
 msgid "No test templates matching query"
 msgstr ""
 
-#: templates/js/part.js:604 templates/js/stock.js:74
+#: templates/js/part.js:618 templates/js/stock.js:75
 msgid "Edit test result"
 msgstr ""
 
-#: templates/js/part.js:605 templates/js/stock.js:75
+#: templates/js/part.js:619 templates/js/stock.js:76
 msgid "Delete test result"
 msgstr ""
 
-#: templates/js/part.js:611
+#: templates/js/part.js:625
 msgid "This test is defined for a parent part"
 msgstr ""
 
@@ -5364,131 +5400,131 @@ msgstr ""
 msgid "No report templates found which match selected stock item(s)"
 msgstr ""
 
-#: templates/js/stock.js:37
+#: templates/js/stock.js:38
 msgid "PASS"
 msgstr ""
 
-#: templates/js/stock.js:39
+#: templates/js/stock.js:40
 msgid "FAIL"
 msgstr ""
 
-#: templates/js/stock.js:44
+#: templates/js/stock.js:45
 msgid "NO RESULT"
 msgstr ""
 
-#: templates/js/stock.js:70
+#: templates/js/stock.js:71
 msgid "Add test result"
 msgstr ""
 
-#: templates/js/stock.js:89
+#: templates/js/stock.js:90
 msgid "No test results found"
 msgstr ""
 
-#: templates/js/stock.js:131
+#: templates/js/stock.js:132
 msgid "Test Date"
 msgstr ""
 
-#: templates/js/stock.js:292
+#: templates/js/stock.js:293
 msgid "In production"
 msgstr ""
 
-#: templates/js/stock.js:296
+#: templates/js/stock.js:297
 msgid "Installed in Stock Item"
 msgstr ""
 
-#: templates/js/stock.js:304
+#: templates/js/stock.js:305
 msgid "Assigned to Sales Order"
 msgstr ""
 
-#: templates/js/stock.js:324
+#: templates/js/stock.js:325
 msgid "No stock items matching query"
 msgstr ""
 
-#: templates/js/stock.js:441
+#: templates/js/stock.js:442
 msgid "Undefined location"
 msgstr ""
 
-#: templates/js/stock.js:535
+#: templates/js/stock.js:536
 msgid "Stock item is in production"
 msgstr ""
 
-#: templates/js/stock.js:540
+#: templates/js/stock.js:541
 msgid "Stock item assigned to sales order"
 msgstr ""
 
-#: templates/js/stock.js:543
+#: templates/js/stock.js:544
 msgid "Stock item assigned to customer"
 msgstr ""
 
-#: templates/js/stock.js:547
+#: templates/js/stock.js:548
 msgid "Stock item has expired"
 msgstr ""
 
-#: templates/js/stock.js:549
+#: templates/js/stock.js:550
 msgid "Stock item will expire soon"
 msgstr ""
 
-#: templates/js/stock.js:553
+#: templates/js/stock.js:554
 msgid "Stock item has been allocated"
 msgstr ""
 
-#: templates/js/stock.js:557
+#: templates/js/stock.js:558
 msgid "Stock item has been installed in another item"
 msgstr ""
 
-#: templates/js/stock.js:565
+#: templates/js/stock.js:566
 msgid "Stock item has been rejected"
 msgstr ""
 
-#: templates/js/stock.js:569
+#: templates/js/stock.js:570
 msgid "Stock item is lost"
 msgstr ""
 
-#: templates/js/stock.js:572
+#: templates/js/stock.js:573
 msgid "Stock item is destroyed"
 msgstr ""
 
-#: templates/js/stock.js:576 templates/js/table_filters.js:106
+#: templates/js/stock.js:577 templates/js/table_filters.js:106
 msgid "Depleted"
 msgstr ""
 
-#: templates/js/stock.js:605
+#: templates/js/stock.js:606
 msgid "Stocktake"
 msgstr ""
 
-#: templates/js/stock.js:760
+#: templates/js/stock.js:778
 msgid "Stock Status"
 msgstr ""
 
-#: templates/js/stock.js:775
+#: templates/js/stock.js:793
 msgid "Set Stock Status"
 msgstr ""
 
-#: templates/js/stock.js:789
+#: templates/js/stock.js:807
 msgid "Select Status Code"
 msgstr ""
 
-#: templates/js/stock.js:790
+#: templates/js/stock.js:808
 msgid "Status code must be selected"
 msgstr ""
 
-#: templates/js/stock.js:910
+#: templates/js/stock.js:928
 msgid "No user information"
 msgstr ""
 
-#: templates/js/stock.js:1030
+#: templates/js/stock.js:1048
 msgid "Create New Location"
 msgstr ""
 
-#: templates/js/stock.js:1129
+#: templates/js/stock.js:1147
 msgid "Serial"
 msgstr ""
 
-#: templates/js/stock.js:1222 templates/js/table_filters.js:131
+#: templates/js/stock.js:1240 templates/js/table_filters.js:131
 msgid "Installed"
 msgstr ""
 
-#: templates/js/stock.js:1247
+#: templates/js/stock.js:1265
 msgid "Install item"
 msgstr ""
 
@@ -5697,59 +5733,63 @@ msgstr ""
 msgid "Issues detected"
 msgstr ""
 
-#: templates/stock_table.html:12
+#: templates/stock_table.html:14
 msgid "Export Stock Information"
 msgstr ""
 
-#: templates/stock_table.html:23
+#: templates/stock_table.html:27
+msgid "Barcode Actions"
+msgstr ""
+
+#: templates/stock_table.html:36
 msgid "Printing Actions"
 msgstr ""
 
-#: templates/stock_table.html:27
+#: templates/stock_table.html:40
 msgid "Print labels"
 msgstr ""
 
-#: templates/stock_table.html:28
+#: templates/stock_table.html:41
 msgid "Print test reports"
 msgstr ""
 
-#: templates/stock_table.html:38
+#: templates/stock_table.html:51
 msgid "Add to selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:39
+#: templates/stock_table.html:52
 msgid "Remove from selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:40
+#: templates/stock_table.html:53
 msgid "Stocktake selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:41
+#: templates/stock_table.html:54
 msgid "Move selected stock items"
 msgstr ""
 
-#: templates/stock_table.html:41
+#: templates/stock_table.html:54
 msgid "Move stock"
 msgstr ""
 
-#: templates/stock_table.html:42
+#: templates/stock_table.html:55
 msgid "Order selected items"
 msgstr ""
 
-#: templates/stock_table.html:43
+#: templates/stock_table.html:56
 msgid "Change status"
 msgstr ""
 
-#: templates/stock_table.html:43
+#: templates/stock_table.html:56
 msgid "Change stock status"
 msgstr ""
 
-#: templates/stock_table.html:46
+#: templates/stock_table.html:59
 msgid "Delete selected items"
 msgstr ""
 
-#: templates/stock_table.html:46
+#: templates/stock_table.html:59
 msgid "Delete Stock"
 msgstr ""