diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po
index 60d2d7b8a4..50aecd55eb 100644
--- a/InvenTree/locale/de/LC_MESSAGES/django.po
+++ b/InvenTree/locale/de/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:46\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -34,50 +34,50 @@ msgstr "Keine passende Aktion gefunden"
msgid "Enter date"
msgstr "Datum eingeben"
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr "Bestätigen"
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr "Löschung bestätigen"
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr "Löschung von Position bestätigen"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr "Passwort eingeben"
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr "Neues Passwort eingeben"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr "Passwort wiederholen"
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr "Neues Passwort bestätigen"
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr "Kategorie auswählen"
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr "E-Mail (nochmal)"
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr "Bestätigung der E-Mail Adresse"
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr "E-Mail Adressen müssen übereinstimmen."
@@ -123,7 +123,7 @@ msgstr "Fehlende Datei"
msgid "Missing external link"
msgstr "Fehlender externer Link"
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr "Anhang"
@@ -136,12 +136,12 @@ msgstr "Datei zum Anhängen auswählen"
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr "Link"
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr "Link zu einer externen URL"
@@ -153,10 +153,10 @@ msgstr "Kommentar"
msgid "File comment"
msgstr "Datei-Kommentar"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr "Benutzer"
@@ -202,8 +202,8 @@ msgstr "Ungültige Auswahl"
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr "Name"
@@ -212,23 +212,23 @@ msgstr "Name"
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr "Beschreibung"
@@ -248,83 +248,83 @@ msgstr "Muss eine gültige Nummer sein"
msgid "Filename"
msgstr "Dateiname"
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr "Deutsch"
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr "Griechisch"
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr "Englisch"
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr "Spanisch"
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr "Spanisch (Mexikanisch)"
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr "Französisch"
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr "Hebräisch"
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr "Italienisch"
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr "Japanisch"
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr "Koreanisch"
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr "Niederländisch"
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr "Norwegisch"
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr "Polnisch"
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr "Portugiesisch"
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr "Russisch"
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr "Schwedisch"
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr "Thailändisch"
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr "Türkisch"
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr "Vietnamesisch"
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr "Chinesisch"
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr "InvenTree Status-Überprüfung fehlgeschlagen"
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr "Ausstehend"
@@ -349,14 +349,14 @@ msgstr "Ausstehend"
msgid "Placed"
msgstr "Platziert"
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr "Fertig"
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr "Storniert"
@@ -370,7 +370,7 @@ msgstr "Verloren"
msgid "Returned"
msgstr "Zurückgegeben"
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr "Versendet"
@@ -395,83 +395,87 @@ msgstr "Zerstört"
msgid "Rejected"
msgstr "Zurückgewiesen"
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr "Alter Bestand-Verfolgungs-Eintrag"
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr "Lagerartikel erstellt"
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr "Lagerartikel bearbeitet"
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr "Seriennummer hinzugefügt"
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr "Bestand gezählt"
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr "Bestand manuell hinzugefügt"
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr "Bestand manuell entfernt"
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr "Standort geändert"
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr "In Baugruppe installiert"
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr "Aus Baugruppe entfernt"
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr "Komponente installiert"
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr "Komponente entfernt"
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr "Vom übergeordneten Element geteilt"
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr "Unterobjekt geteilt"
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr "Zum Kunden geschickt"
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr "Rücksendung vom Kunden"
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr "Endprodukt erstellt"
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr "Endprodukt fertiggestellt"
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr "Gegen Bestellung empfangen"
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr "in Arbeit"
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr "Anzahl"
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr "Menge der Endprodukte angeben"
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr "Seriennummer"
@@ -661,7 +665,7 @@ msgstr "Bauauftrag"
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr "Bauaufträge"
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr "Bauauftragsreferenz"
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "Referenz"
@@ -695,7 +699,7 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr "Teil"
@@ -776,7 +781,7 @@ msgstr "Bauauftrags-Status"
msgid "Build status code"
msgstr "Bau-Statuscode"
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr "Losnummer"
@@ -830,27 +835,27 @@ msgstr "Nutzer der für diesen Bauauftrag zuständig ist"
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr "Externer Link"
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr "Notizen"
@@ -883,7 +888,7 @@ msgstr "Zugewiesene Menge ({q}) darf nicht verfügbare Menge ({a}) übersteigen"
msgid "Stock item is over-allocated"
msgstr "BestandObjekt ist zu oft zugewiesen"
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr "Reserviermenge muss größer null sein"
@@ -891,51 +896,52 @@ msgstr "Reserviermenge muss größer null sein"
msgid "Quantity must be 1 for serialized stock"
msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein"
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr "Ausgewähltes Bestands-Objekt nicht in Stückliste für Teil '{p}' gefunden"
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr "Bauauftrag"
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr "Bauauftrag starten um Teile zuzuweisen"
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr "Lagerartikel"
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr "Quell-Lagerartikel"
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr "Anzahl an Lagerartikel dem Bauauftrag zuweisen"
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr "Installiere in"
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr "Ziel-Lagerartikel"
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr "Endprodukt"
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr "Dieses Endprodukt ist nicht vollständig zugewiesen"
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr "Lagerort"
@@ -975,11 +981,11 @@ msgstr "Lagerort für fertige Endprodukte"
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr "Status"
@@ -1000,33 +1006,33 @@ msgstr "Endprodukt"
msgid "Build output must point to the same build"
msgstr "Endprodukt muss auf den gleichen Bauauftrag verweisen"
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr "bom_item.part muss auf dasselbe Teil verweisen wie der Bauauftrag"
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr "Teil muss auf Lager sein"
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr "Anzahl muss größer Null sein"
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Verfügbare Menge ({q}) überschritten"
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr "Für Zuweisung von verfolgten Teilen muss ein Endprodukt angegeben sein"
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr "Endprodukt kann bei Zuweisung nicht-verfolgter Teile nicht angegeben werden"
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr "Zuweisungen müssen angegeben werden"
@@ -1067,33 +1073,33 @@ msgstr "Bauauftrag löschen"
msgid "Complete Build"
msgstr "Bauauftrag fertigstellen"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr "Baubeschreibung"
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr "Dieser Bauauftrag ist dem Auftrag %(link)s zugeordnet"
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr "Dieser Bauauftrag ist dem Bauauftrag %(link)s untergeordnet"
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr "Bauauftrag ist bereit abgeschlossen zu werden"
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr "Bauauftrag kann nicht abgeschlossen werden, da es noch ausstehende Endprodukte gibt"
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr "Benötigte Teil-Anzahl wurde noch nicht fertiggestellt"
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr "Bestand wurde Bauauftrag noch nicht vollständig zugewiesen"
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr "Fertig"
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr "Auftrag"
@@ -1211,7 +1217,7 @@ msgstr "Ausgangs-Lager"
msgid "Stock can be taken from any available location."
msgstr "Bestand kann jedem verfügbaren Lagerort entnommen werden."
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr "Ziel-Lager"
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr "Zugewiesene Teile"
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr "Benötigte Teile bestellen"
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr "Teile bestellen"
@@ -1347,7 +1353,7 @@ msgstr "Bauauftrags-Notizen"
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr "Anmerkungen bearbeiten"
@@ -1489,7 +1495,7 @@ msgstr "{name.title()} Datei"
msgid "Select {name} file to upload"
msgstr "{name} Datei zum Hochladen auswählen"
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)"
@@ -1651,7 +1657,7 @@ msgstr "Vorlage"
msgid "Parts are templates by default"
msgstr "Teile sind standardmäßig Vorlagen"
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr "Gruppe der neue Benutzer bei der Registrierung zugewiesen werden"
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr "Abonnierte Teile anzeigen"
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr "Zeige abonnierte Teile auf der Startseite"
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr "Abonnierte Kategorien anzeigen"
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr "Zeige abonnierte Teilkategorien auf der Startseite"
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr "Neueste Teile anzeigen"
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr "Zeige neueste Teile auf der Startseite"
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr "Aktuelle Teile-Stände"
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr "Anzahl der neusten Teile auf der Startseite"
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr "Nicht validierte Stücklisten anzeigen"
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr "Zeige Stücklisten, die noch nicht validiert sind, auf der Startseite"
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr "Neueste Bestandänderungen anzeigen"
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite"
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr "aktueller Bestand"
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr "Anzahl des geänderten Bestands auf der Startseite"
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr "Niedrigen Bestand anzeigen"
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr "Zeige geringen Bestand auf der Startseite"
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr "Lerren Bestand anzeigen"
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr "Zeige aufgebrauchte Lagerartikel auf der Startseite"
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr "Benötigten Bestand anzeigen"
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr "Zeige Bestand für Bauaufträge auf der Startseite"
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr "Abgelaufenen Bestand anzeigen"
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr "Zeige abgelaufene Lagerbestände auf der Startseite"
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr "Alten Bestand anzeigen"
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr "Zeige überfällige Lagerartikel auf der Startseite"
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr "Ausstehende Bauaufträge anzeigen"
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr "Zeige ausstehende Bauaufträge auf der Startseite"
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr "Zeige überfällige Bauaufträge"
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr "Zeige überfällige Bauaufträge auf der Startseite"
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr "Ausstehende POs anzeigen"
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr "Zeige ausstehende POs auf der Startseite"
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr "Überfällige POs anzeigen"
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr "Zeige überfällige POs auf der Startseite"
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr "Ausstehende SOs anzeigen"
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr "Zeige ausstehende SOs auf der Startseite"
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr "Überfällige SOs anzeigen"
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr "Zeige überfällige SOs auf der Startseite"
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr "Label inline anzeigen"
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "PDF-Labels im Browser anzeigen, anstatt als Datei herunterzuladen"
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr "Berichte inline anzeigen"
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "PDF-Berichte im Browser anzeigen, anstatt als Datei herunterzuladen"
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr "Anzahl Suchergebnisse"
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr "Anzahl der Ergebnisse, die in der Vorschau angezeigt werden sollen"
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr "Suche Bestand anzeigen"
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr "Bestand in Suchvorschau anzeigen"
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr "Inaktive Teile ausblenden"
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr "Inaktive Teile in der Suchvorschau ausblenden"
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr "zeige Bestand in Eingabemasken"
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken"
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr "Esc-Taste schließt Formulare"
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr "Benutze die Esc-Taste, um Formulare zu schließen"
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr "Fixierter Navigationsleiste"
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr "Position der InvenTree Navigationsleiste am oberen Bildschirmrand fixieren"
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr "Preisstaffelungs Anzahl"
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr "Preis"
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr "Stückpreis für die angegebene Anzahl"
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr "Kontakt-Telefon"
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr "Email"
@@ -2347,8 +2361,8 @@ msgstr "Währung"
msgid "Default currency used for this company"
msgstr "Standard-Währung für diese Firma"
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr "Basisteil"
@@ -2359,7 +2373,7 @@ msgstr "Teil auswählen"
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr "Teilbeschreibung des Herstellers"
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr "Herstellerteil"
@@ -2403,8 +2417,8 @@ msgstr "Parametername"
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr "Wert"
@@ -2431,7 +2445,7 @@ msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren"
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr "Mindestpreis"
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr "Verpackungen"
@@ -2506,7 +2520,7 @@ msgstr "Währungscode"
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr "Firma"
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr "Bild von URL herunterladen"
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr "Kunde"
@@ -2571,7 +2585,7 @@ msgstr "Bild hochladen"
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr "Zuliefererteile"
@@ -2590,14 +2604,14 @@ msgstr "Neues Zuliefererteil"
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr "Optionen"
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr "Teile bestellen"
@@ -2611,7 +2625,7 @@ msgstr "Teile löschen"
msgid "Delete Parts"
msgstr "Teile löschen"
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr "Herstellerteile"
@@ -2633,8 +2647,8 @@ msgstr "Zulieferer-Bestand"
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr "Neue Bestellung"
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr "Zulieferer-Liste"
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr "Hersteller"
@@ -2706,7 +2720,7 @@ msgstr "Hersteller"
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr "Teil bestellen"
@@ -2728,7 +2742,7 @@ msgstr "Internes Teil"
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr "Zulieferer"
@@ -2742,7 +2756,7 @@ msgstr "Zuliefererteil entfernen"
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr "Löschen"
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr "Parameter löschen"
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr "Parameter hinzufügen"
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr "Zugewiesene Lagerartikel"
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr "Zuliefererteil"
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr "Zulieferer-Bestand"
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr "Neuen Lagerartikel hinzufügen"
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr "Neuer Lagerartikel"
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr "Zulieferer-Bestellungen"
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr "Teil bestellen"
@@ -2843,7 +2857,7 @@ msgstr "Preisinformationen ansehen"
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr "Preisstaffel hinzufügen"
@@ -2851,11 +2865,11 @@ msgstr "Preisstaffel hinzufügen"
msgid "No price break information found"
msgstr "Keine Informationen zur Preisstaffel gefunden"
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr "Preisstaffel löschen"
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr "Preisstaffel bearbeiten"
@@ -2869,14 +2883,14 @@ msgstr "Preisstaffel löschen"
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr "Bestand"
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr "Bepreisung"
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr "Lagerartikel"
@@ -2912,7 +2926,7 @@ msgstr "Neuer Zulieferer"
msgid "New Manufacturer"
msgstr "Neuer Hersteller"
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr "Kunden"
@@ -3121,7 +3135,7 @@ msgstr "Bestellreferenz"
msgid "Target date for order completion. Order will be overdue after this date."
msgstr "Zieldatum für Auftrags-Fertigstellung."
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr "Versanddatum"
@@ -3130,7 +3144,7 @@ msgstr "Versanddatum"
msgid "shipped by"
msgstr "Versand von"
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr "Anzahl"
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr "Position - Referenz"
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr "Position - Notizen"
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr "Bestellung"
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr "Bestellung"
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr "Zuliefererteil"
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr "Empfangen"
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr "Empfangene Objekt-Anzahl"
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr "Preis"
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr "Preis pro Einheit"
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr "Wo möchte der Käufer diesen Artikel gelagert haben?"
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr "Verkaufspreis"
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr "Stückverkaufspreis"
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr "Lagerartikel wurde nicht zugewiesen"
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr "Kann Lagerartikel keiner Zeile mit einem anderen Teil hinzufügen"
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr "Kann Lagerartikel keiner Zeile ohne Teil hinzufügen"
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "Die zugeordnete Anzahl darf nicht die verfügbare Anzahl überschreiten"
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr "Zu viele Lagerartikel zugewiesen"
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr "Anzahl für serialisierte Lagerartikel muss 1 sein"
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr "Position"
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr "Position"
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr "Lagerartikel für Zuordnung auswählen"
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr "Anzahl für Bestandszuordnung eingeben"
@@ -3530,7 +3544,7 @@ msgstr "Auswahl duplizieren"
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr "Zeile entfernen"
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr "Aktionen"
@@ -3797,24 +3811,24 @@ msgstr "Stückpreis für {part} auf {price} aktualisiert"
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr "{part} Stückpreis auf {price} und Menge auf {qty} aktualisiert"
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr "Muss größer als 0 sein"
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr "Muss eine gültige Nummer sein"
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr "Standort für anfänglichen Bestand angeben"
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr "Dieses Feld ist erforderlich"
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr "Standard-Lagerort"
@@ -3822,99 +3836,43 @@ msgstr "Standard-Lagerort"
msgid "Available Stock"
msgstr "Verfügbarer Bestand"
-#: part/forms.py:63
-msgid "File Format"
-msgstr "Dateiformat"
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr "Ausgabe-Dateiformat auswählen"
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr "Kaskadierend"
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr "Kaskadierende Stückliste herunterladen"
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr "Ebenen"
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr "Maximale Anzahl an Ebenen für Stückliste-Export auswählen (0 = alle Ebenen)"
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr "Parameter-Daten einschließen"
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr "Teil-Parameter in Stückliste-Export einschließen"
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr "Bestand einschließen"
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr "Teil-Bestand in Stückliste-Export einschließen"
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr "Herstellerdaten einschließen"
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr "Teil-Herstellerdaten in Stückliste-Export einschließen"
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr "Zulieferer einschließen"
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr "Zulieferer-Daten in Stückliste-Export einschließen"
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr "Ausgangsteil"
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr "Teil für Stücklisten-Kopie auswählen"
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr "Stücklisten-Position(en) löschen"
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr "Kopie von Stückliste bestätigen"
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr "kontrollieren"
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr "Bestätigen, dass die Stückliste korrekt ist"
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr "Teil-Kategorie wählen"
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr "Parameter-Vorlage zu Kategorien dieser Ebene hinzufügen"
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr "Parameter-Vorlage zu allen Kategorien hinzufügen"
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr "Menge für die Preisberechnung"
@@ -3930,24 +3888,24 @@ msgstr "Standard Stichwörter"
msgid "Default keywords for parts in this category"
msgstr "Standard-Stichworte für Teile dieser Kategorie"
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Teil-Kategorie"
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr "Teil-Kategorien"
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr "Teile"
@@ -4001,7 +3959,7 @@ msgstr "Variante von"
msgid "Part description"
msgstr "Beschreibung des Teils"
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr "Schlüsselwörter"
@@ -4014,7 +3972,7 @@ msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern"
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr "Kategorie"
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr "Teile-Kategorie"
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr "IPN (Interne Produktnummer)"
@@ -4145,8 +4103,8 @@ msgstr "Test-Vorlagen können nur für verfolgbare Teile angelegt werden"
msgid "Test with this name already exists for this part"
msgstr "Ein Test mit diesem Namen besteht bereits für dieses Teil"
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr "Test-Name"
@@ -4162,7 +4120,7 @@ msgstr "Test-Beschreibung"
msgid "Enter description for this test"
msgstr "Beschreibung für diesen Test eingeben"
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr "Benötigt"
@@ -4171,7 +4129,7 @@ msgstr "Benötigt"
msgid "Is this test required to pass?"
msgstr "Muss dieser Test erfolgreich sein?"
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr "Erfordert Wert"
@@ -4179,7 +4137,7 @@ msgstr "Erfordert Wert"
msgid "Does this test require a value when adding a test result?"
msgstr "Muss für diesen Test ein Wert für das Test-Ergebnis eingetragen werden?"
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr "Anhang muss eingegeben werden"
@@ -4241,8 +4199,8 @@ msgstr "Teil für die Nutzung in der Stückliste auswählen"
msgid "BOM quantity for this BOM item"
msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil"
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr "Optional"
@@ -4275,8 +4233,8 @@ msgstr "Prüfsumme"
msgid "BOM line checksum"
msgstr "Prüfsumme der Stückliste"
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr "Geerbt"
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr "Diese Stücklisten-Position wird in die Stücklisten von Teil-Varianten vererbt"
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr "Varianten zulassen"
@@ -4406,100 +4364,100 @@ msgstr "Bestätigen Sie das die Stückliste für
%(part)s korrekt i
msgid "This will validate each line in the BOM."
msgstr "Damit wird jede Zeile der Stückliste kontrolliert"
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr "Sie haben Benachrichtigungen für diese Kategorie abonniert"
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr "Benachrichtigungen für diese Kategorie abonnieren"
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr "Kategorieaktionen"
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr "Kategorie bearbeiten"
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr "Kategorie bearbeiten"
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr "Kategorie löschen"
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr "Kategorie löschen"
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr "Teil-Kategorie anlegen"
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr "Neue Kategorie"
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr "Pfad zur Kategorie"
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr "Oberste Teil-Kategorie"
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr "Unter-Kategorien"
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr "Teile (inklusive Unter-Kategorien)"
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr "Teile-Daten exportieren"
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr "Exportieren"
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr "Neues Teil anlegen"
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr "Neues Teil"
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr "Teil-Kategorie auswählen"
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr "Teil-Kategorie auswählen"
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr "Label drucken"
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr "Exportieren"
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr "Teilparameter"
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr "Teil-Kategorie hinzufügen"
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr "Teil hinzufügen"
@@ -4566,24 +4524,24 @@ msgstr "Teil evtl. Duplikat dieser Teile"
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr "%(full_name)s - %(desc)s (%(match_per)s%% übereinstimmend)"
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr "Teilbestand"
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr "Bestand aller Varianten von %(full_name)s"
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr "Teil Test-Vorlagen"
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr "Test Vorlage hinzufügen"
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr "Verkaufsauftragszuweisungen"
@@ -4619,7 +4577,7 @@ msgstr "Stückliste"
msgid "Export actions"
msgstr "Export-Aktionen"
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr "Stückliste exportieren"
@@ -4683,38 +4641,38 @@ msgstr "Alle ausgewählte Stücklistenpositionen werden gelöscht"
msgid "Create BOM Item"
msgstr "Stücklisten-Position anlegen"
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr "verknüpftes Teil"
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr "verknüpftes Teil hinzufügen"
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr "Testergebnis-Vorlage hinzufügen"
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr "Teilenotizen bearbeiten"
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr "Stückpreis Einkauf - %(currency)s"
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr "Stückpreis Differenz - %(currency)s"
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr "Stückpreis Zulieferer - %(currency)s"
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr "Stückpreis - %(currency)s"
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr "Benachrichtigungen für dieses Teil abonnieren"
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr "Barcode Aktionen"
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "QR-Code anzeigen"
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr "Label drucken"
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr "Kosteninformationen ansehen"
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr "Bestands-Aktionen"
@@ -4848,7 +4806,7 @@ msgstr "Dieses Teil ist eine Variante von %(link)s"
msgid "In Stock"
msgstr "Auf Lager"
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr "Bestellt"
@@ -4864,12 +4822,12 @@ msgstr "Benötigt für Aufträge"
msgid "Allocated to Orders"
msgstr "Zu Bauaufträgen zugeordnet"
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr "Herstellbar"
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr "Im Bau"
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr "letzte Seriennummer"
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr "Nach Seriennummer suchen"
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr "Gesamtkosten"
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr "Keine Zulieferer-Preise verfügbar"
@@ -5038,7 +4996,7 @@ msgstr "Verkaufspreis anzeigen"
msgid "Calculation parameters"
msgstr "Berechnungsparameter"
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr "Zuliefererkosten"
@@ -5060,7 +5018,7 @@ msgstr "Für dieses Teil sind keine Bestandspreise verfügbar."
msgid "Internal Cost"
msgstr "Interne Kosten"
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr "Interne Preisspanne hinzufügen"
@@ -5080,9 +5038,9 @@ msgstr "Keine Verkaufsgeschichte für diesen Teil verfügbar."
msgid "Set category for the following parts"
msgstr "Kategorie für Teile setzen"
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr "Kein Bestand"
@@ -5156,67 +5114,67 @@ msgstr "überprüfte Stückliste"
msgid "Match Parts"
msgstr "Teile zuordnen"
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr "Stückliste exportieren"
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr "Löschen des Teils bestätigen"
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr "Teil wurde gelöscht"
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr "Teilbepreisung"
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr "Teilparametervorlage anlegen"
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr "Teilparametervorlage bearbeiten"
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr "Teilparametervorlage löschen"
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr "Teil-Kategorie bearbeiten"
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr "Teil-Kategorie löschen"
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr "Teil-Kategorie wurde gelöscht"
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr "Kategorieparametervorlage anlegen"
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr "Kategorieparametervorlage bearbeiten"
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr "Kategorieparametervorlage löschen"
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr "neue Preisstaffel hinzufügt"
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr "Interne Preisspanne bearbeiten"
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr "Interne Preisspanne löschen"
@@ -5390,12 +5348,12 @@ msgid "Stock Item Test Report"
msgstr "Lagerartikel Test-Bericht"
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr "Seriennummer"
@@ -5404,19 +5362,19 @@ msgid "Test Results"
msgstr "Testergebnisse"
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr "Test"
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr "Ergebnis"
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr "Datum"
@@ -5434,17 +5392,18 @@ msgid "Installed Items"
msgstr "Verbaute Objekte"
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr "Seriennummer"
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr "Menge ist erforderlich"
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr "Ablaufdatum"
@@ -5492,12 +5451,12 @@ msgstr "nicht mehr verbauen bestätigen"
msgid "Confirm removal of installed stock items"
msgstr "Entfernen der verbauten Lagerartikel bestätigen"
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr "Besitzer"
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr "Besitzer auswählen"
@@ -5530,150 +5489,190 @@ msgstr "Teil muss eine Referenz haben wenn is_building wahr ist"
msgid "Build reference does not point to the same part object"
msgstr "Referenz verweist nicht auf das gleiche Teil"
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr "Eltern-Lagerartikel"
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr "Basis-Teil"
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr "Passendes Zuliefererteil für diesen Lagerartikel auswählen"
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "Bestand-Lagerort"
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr "Wo wird dieses Teil normalerweise gelagert?"
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr "Die Verpackung dieses Lagerartikel ist gelagert in"
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr "verbaut in"
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr "Ist dieses Teil in einem anderen verbaut?"
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr "Seriennummer für dieses Teil"
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr "Losnummer für diesen Lagerartikel"
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr "Bestand"
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr "Quellbau"
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr "Bauauftrag für diesen Lagerartikel"
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr "Quelle Bestellung"
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr "Bestellung für diesen Lagerartikel"
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr "Ziel-Auftrag"
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr "Ablaufdatum für Lagerartikel. Bestand wird danach als abgelaufen gekennzeichnet"
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr "Löschen wenn leer"
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr "Diesen Lagerartikel löschen wenn der Bestand aufgebraucht ist"
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr "Lagerartikel-Notizen"
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr "Preis für eine Einheit bei Einkauf"
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr "Teil ist nicht verfolgbar"
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr "Anzahl muss eine Ganzzahl sein"
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr "Anzahl darf nicht die verfügbare Anzahl überschreiten ({n})"
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr "Seriennummern muss eine Liste von Ganzzahlen sein"
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr "Anzahl stimmt nicht mit den Seriennummern überein"
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr "Seriennummern {exists} existieren bereits"
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Lagerartikel kann nicht bewegt werden, da kein Bestand vorhanden ist"
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr "Eintrags-Notizen"
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr "Wert muss für diesen Test angegeben werden"
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr "Anhang muss für diesen Test hochgeladen werden"
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr "Name des Tests"
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr "Testergebnis"
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr "Test Ausgabe Wert"
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr "Test Ergebnis Anhang"
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr "Test Notizen"
@@ -5698,7 +5697,7 @@ msgstr "Anzahl darf nicht die verfügbare Menge überschreiten ({q})"
msgid "Enter serial numbers for new items"
msgstr "Seriennummern für neue Teile eingeben"
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr "Ziel-Bestand"
@@ -5710,39 +5709,63 @@ msgstr "Optionales Notizfeld"
msgid "Serial numbers cannot be assigned to this part"
msgstr "Seriennummern können diesem Teil nicht zugewiesen werden"
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr "Eine Liste der Lagerbestände muss angegeben werden"
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr "Primärschlüssel Lagerelement"
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr "Bestandsbewegungsnotizen"
@@ -5767,7 +5790,7 @@ msgstr "Dieser Lagerartikel hat keine Kinder"
msgid "Test Data"
msgstr "Testdaten"
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr "Test-Bericht"
@@ -5799,197 +5822,189 @@ msgstr "Testergebnis bearbeiten"
msgid "Delete Test Result"
msgstr "Testergebnis löschen"
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr "Barcode abhängen"
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr "Barcode anhängen"
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr "zu Lagerort einscannen"
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr "Druck Aktionen"
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr "Bestands-Anpassungs Aktionen"
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr "Bestand zählen"
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr "Bestand hinzufügen"
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr "Bestand entfernen"
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr "Bestand serialisieren"
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr "Bestand verschieben"
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr "Kunden zuweisen"
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr "zu Bestand zurückgeben"
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr "Lagerartikel deinstallieren"
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr "Deinstallieren"
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr "Lagerartikel installieren"
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr "Installieren"
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr "in Variante ändern"
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr "Lagerartikel duplizieren"
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr "Lagerartikel bearbeiten"
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr "Lagerartikel löschen"
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr "vorherige Seite"
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr "Zur vorherigen Seriennummer wechseln"
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr "nächste Seite"
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr "Zur nächsten Seriennummer wechseln"
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr "Dieser Lagerartikel lief am %(item.expiry_date)s ab"
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr "abgelaufen"
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr "Dieser Lagerartikel läuft am %(item.expiry_date)s ab"
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr "überfällig"
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr "Zuletzt aktualisiert"
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr "Letzte Inventur"
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr "Keine Inventur ausgeführt"
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr "Sie gehören nicht zu den Eigentümern dieses Objekts und können es nicht ändern."
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr "Dieser Lagerartikel wird gerade hergestellt und kann nicht geändert werden."
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr "Ändern des Lagerartikel in der Bauauftrag-Ansicht."
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr "Dieser Lagerartikel hat nicht alle Tests bestanden"
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr "Diesesr Lagerartikel ist serialisiert. Es hat eine eindeutige Seriennummer und die Anzahl kann nicht angepasst werden."
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr "Dieser Lagerartikel kann nicht gelöscht werden, da es Kinder besitzt"
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr "Dieser Bestand wird automatisch gelöscht wenn der Bestand aufgebraucht ist."
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr "Kein Lagerort gesetzt"
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr "Barcode-Bezeichner"
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr "Elternposition"
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr "Kein Hersteller ausgewählt"
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr "Tests"
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr "Bestandsstatus bearbeiten"
@@ -6043,59 +6058,59 @@ msgstr "Teile mit Seriennummern mit diesem BestandObjekt anlegen."
msgid "Select quantity to serialize, and unique serial numbers."
msgstr "Zu serialisierende Anzahl und eindeutige Seriennummern angeben."
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr "Teile einchecken"
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr "Lagerort-Aktionen"
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr "Lagerort bearbeiten"
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr "Lagerort löschen"
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr "Neuen Lagerort anlegen"
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr "Neuer Lagerort"
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr "Lagerortpfad"
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr "Oberster Lagerstandort"
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr "Sie sind nicht auf der Liste der Besitzer dieses Lagerorts. Der Bestands-Lagerort kann nicht verändert werden."
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr "Unter-Lagerorte"
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr "Bestand-Lagerorte"
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr "Druck Aktionen"
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr "Label drucken"
@@ -6180,7 +6195,7 @@ msgstr "Lagerartikel-QR-Code"
msgid "Uninstall Stock Items"
msgstr "Lagerartikel deinstallieren"
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr "Bestands-Anpassung bestätigen"
@@ -6188,7 +6203,7 @@ msgstr "Bestands-Anpassung bestätigen"
msgid "Uninstalled stock items"
msgstr "Lagerartikel deinstalliert"
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr "Lagerartikel bearbeiten"
@@ -6200,7 +6215,7 @@ msgstr "Neuen Lagerort erstellen"
msgid "Create new Stock Item"
msgstr "Neuen Lagerartikel hinzufügen"
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr "Bestand duplizieren"
@@ -6316,10 +6331,6 @@ msgstr "überfällige Aufträge"
msgid "Search Results"
msgstr "Suchergebnisse"
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr "Eine Sucheanfrage eingeben"
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr "Barcode-Einstellungen"
@@ -6365,7 +6376,7 @@ msgstr "Server Einstellungen"
msgid "Login Settings"
msgstr "Anmeldeeinstellungen"
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr "Anmelden"
@@ -6650,7 +6661,7 @@ msgstr "Vorname"
msgid "Last Name"
msgstr "Nachname"
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr "Die folgenden E-Mail-Adressen sind mit deinem Konto verknüpft:"
@@ -6675,145 +6686,193 @@ msgid "Re-send Verification"
msgstr "Verifikation erneut senden"
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr "Entfernen"
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr "Warnung:"
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr "Sie haben derzeit keine E-Mail-Adressen eingerichtet. Sie sollten wirklich eine hinzufügen, damit Sie Benachrichtigungen erhalten, ihr Konto Zurücksetzen können usw."
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr "E-Mail-Adresse hinzufügen"
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr "Geben Sie Ihre Email-Adresse ein"
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr "E-Mail-Adresse hinzufügen"
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr "Soziale Konten"
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr "Sie können sich mit einem der folgenden Drittanbieterkonten bei Ihrem Konto anmelden:"
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
-msgstr "Es sind keine sozialen Netzwerke mit Ihrem InvenTree-Konto verbunden"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
+msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr "Drittanbieter-Konto hinzufügen"
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
-msgstr "Aktive Sitzungen"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
+msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
-msgstr "Aktive Sitzungen abmelden (ausgenommen diese)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
+msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
-msgstr "Aktive Sitzungen abmelden"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
+msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr "unbekannt auf unbekanntem"
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr "unbekannt"
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr "IP Adresse"
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
-msgstr "Gerät"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
+msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
-msgstr "Letzte Aktivität"
+msgid "You currently do not have any factors set up."
+msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
-msgstr "%(time)s vor (diese Sitzung)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
+msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
-msgstr "%(time)s vor"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
+msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
-msgstr "Möchten Sie die ausgewählte E-Mail-Adresse wirklich entfernen?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
+msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr "Anzeige-Einstellungen"
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr "Stil auswählen"
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr "Design auswählen"
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr "Spracheinstellung"
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr "Sprache festlegen"
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr "%(lang_translated)s%% übersetzt"
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr "Keine Übersetzungen verfügbar"
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr "Sprache festlegen"
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr "Einige Sprachen sind nicht vollständig übersetzt"
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr "Zeige nur ausreichende"
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr "und versteckt."
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr "Auch unvollständige anzeigen"
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr "Hilf bei der Übersetzung!"
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr "Aktive Sitzungen"
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr "Aktive Sitzungen abmelden (ausgenommen diese)"
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr "Aktive Sitzungen abmelden"
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr "unbekannt auf unbekanntem"
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr "unbekannt"
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr "IP Adresse"
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr "Gerät"
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr "Letzte Aktivität"
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr "%(time)s vor (diese Sitzung)"
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr "%(time)s vor"
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr "Möchten Sie die ausgewählte E-Mail-Adresse wirklich entfernen?"
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr "und versteckt."
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6832,7 +6891,7 @@ msgid "InvenTree Version Information"
msgstr "InvenTree-Versionsinformationen"
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7008,6 +7067,71 @@ msgstr "Oder verwenden Sie einen SSO-Anbieter für die Anmeldung"
msgid "View in administration panel"
msgstr "Im Administrationsbereich anzeigen"
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr "Link hinzufügen"
@@ -7046,13 +7170,13 @@ msgid "The following parts are low on required stock"
msgstr "Bei den folgenden Teilen gibt es wenige Lagerartikel"
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr "Benötigte Menge"
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7241,7 +7365,7 @@ msgstr "Dadurch wird die Verknüpfung zwischen diesem Lagerartikel und dem Barco
msgid "Unlink"
msgstr "Entfernen"
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr "Lagerartikel entfernen"
@@ -7283,91 +7407,153 @@ msgstr "In Lagerorten buchen"
msgid "Barcode does not match a valid location"
msgstr "Barcode entspricht keinem Lagerort"
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr "Format"
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr "Dateiformat auswählen"
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr "Kaskadierend"
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr "Kaskadierende Stückliste herunterladen"
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr "Ebenen"
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr "Maximale Anzahl an Ebenen für Stückliste-Export auswählen (0 = alle Ebenen)"
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr "Parameter-Daten einschließen"
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr "Bestand einschließen"
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr "Teil-Bestand in Stückliste-Export einschließen"
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr "Herstellerdaten einschließen"
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr "Teil-Herstellerdaten in Stückliste-Export einschließen"
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr "Zulieferer einschließen"
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr "Zulieferer-Daten in Stückliste-Export einschließen"
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr "Ersatzteil entfernen"
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr "Wählen Sie eine neue Variante aus und fügen Sie sie mit den folgenden Eingaben hinzu"
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr "Sind Sie sicher, dass Sie dieses Ersatzteil entfernen möchten?"
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr "Ersatzteil entfernen"
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr "Ersatzteil hinzufügen"
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr "Stücklisten Ersatzteile bearbeiten"
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr "Ersatzteile verfügbar"
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr "Varianten erlaubt"
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr "Unterbaugruppe öffnen"
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr "Ersatzteile"
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr "Kaufpreisspanne"
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr "Durchschnittlicher Kaufpreis"
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr "Stückliste anzeigen"
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr "Stücklisten-Position kontrollieren"
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr "Diese Position wurde kontrolliert"
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr "Ersatzteile bearbeiten"
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr "Stücklisten-Position bearbeiten"
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr "Stücklisten-Position löschen"
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr "Keine Stücklisten-Position(en) gefunden"
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr "Sind Sie sicher, dass Sie diese Stücklisten-Position löschen wollen?"
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr "benötigtes Teil"
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr "Geerbt von übergeordneter Stückliste"
@@ -7466,7 +7652,7 @@ msgstr "Zugeordnet"
msgid "Build stock"
msgstr "Bestand bauen"
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr "Bestand bestellen"
@@ -7511,9 +7697,9 @@ msgstr "Keine passenden Lagerbestände"
msgid "No builds matching query"
msgstr "Keine Bauaufträge passen zur Anfrage"
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr "Auswählen"
@@ -7521,7 +7707,7 @@ msgstr "Auswählen"
msgid "Build order is overdue"
msgstr "Bauauftrag ist überfällig"
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr "Keine Benutzerinformation"
@@ -7684,20 +7870,20 @@ msgstr "Anzeigevorgang nicht erlaubt"
msgid "Enter a valid number"
msgstr "Gib eine gültige Nummer ein"
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr "Fehler in Formular"
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr "Keine Ergebnisse gefunden"
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr "Suche"
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr "Eingabe leeren"
@@ -7710,7 +7896,7 @@ msgid "NO"
msgstr "NEIN"
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr "Lagerartikel auswählen"
@@ -7890,14 +8076,6 @@ msgstr "Auftrag anlegen"
msgid "Export Order"
msgstr "Bestellung exportieren"
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr "Format"
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr "Dateiformat auswählen"
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr "Positionen auswählen"
@@ -7910,7 +8088,7 @@ msgstr "Mindestens eine Position muss ausgewählt werden"
msgid "Quantity to receive"
msgstr "Zu erhaltende Menge"
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr "Status"
@@ -7959,7 +8137,7 @@ msgid "Total"
msgstr "Summe"
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr "Stück-Preis"
@@ -8044,7 +8222,7 @@ msgid "Delete Stock Allocation"
msgstr "Bestands-Zuordnung löschen"
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr "an Kunde versand"
@@ -8208,92 +8386,92 @@ msgstr "Verkäufliches Teil"
msgid "No variants found"
msgstr "Keine Varianten gefunden"
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr "Teile-Beziehung löschen"
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr "Teile-Beziehung löschen"
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr "Keine Teile gefunden"
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr "Keine Kategorie"
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr "Bestand niedrig"
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr "Listenansicht"
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr "Rasteransicht"
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr "Baumansicht"
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr "Abonnierte Kategorie"
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr "Pfad"
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr "Keine zur Anfrage passenden Testvorlagen"
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr "Testergebnis bearbeiten"
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr "Testergebnis löschen"
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr "Dieses Testergebnis ist für ein Hauptteil"
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr "Testergebnis-Vorlage bearbeiten"
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr "Testergebnis-Vorlage löschen"
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr "Keine ${human_name} Informationen gefunden"
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr "${human_name} bearbeiten"
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr "${human_name} löschen"
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr "Einzelpreis"
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr "Einzelpreisdifferenz"
@@ -8367,316 +8545,340 @@ msgstr "Aufträge auswählen"
msgid "Sales Order(s) must be selected before printing report"
msgstr "Auftrag muss vor dem Berichtsdruck ausgewählt werden"
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr "Lagerartikel serialisieren"
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr "Nächste verfügbare Seriennummer"
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr "Letzte Seriennummer"
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr "Lager-Serialisierung bestätigen"
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr "Übergeordneter Lagerort"
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr "Neuer Lagerstandort"
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr "Dieser Teil kann nicht serialisiert werden"
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr "Ausgangsmenge für diesen Lagerartikel eingeben"
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr "Seriennummern für neue Lagerartikel eingeben (oder leer lassen)"
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr "Neuer Lagerartikel erstellt"
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr "Mehrere Lagerartikel erstellt"
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr "Seriennummer finden"
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr "Seriennummer eingeben"
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr "Eine Seriennummer eingeben"
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr "Keine passende Seriennummer"
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr "Mehrere Ergebnisse gefunden"
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr "Bestand exportieren"
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr "Einschließlich Unterstandorte"
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr "Lagerartikel in untergeordneten Lagerorten einschließen"
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr "Bestand verschieben"
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr "Verschieben"
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr "Bestand zählen"
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr "Anzahl"
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr "Bestand entfernen"
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr "Entfernen"
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr "Bestand hinzufügen"
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr "Hinzufügen"
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr "Bestand löschen"
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr "Menge von serialisiertem Bestand kann nicht bearbeitet werden"
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr "Bestandsanzahl angeben"
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr "Sie müssen mindestens einen Lagerartikel auswählen"
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr "ERFOLGREICH"
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr "FEHLGESCHLAGEN"
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr "KEIN ERGEBNIS"
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr "Testergebnis hinzufügen"
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr "Keine Testergebnisse gefunden"
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr "Testdatum"
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr "In Arbeit"
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr "In Lagerartikel installiert"
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr "Auftrag zugewiesen"
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr "Kein Lagerort gesetzt"
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr "Lagerartikel wird produziert"
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr "Lagerartikel wurde Auftrag zugewiesen"
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr "Lagerartikel wurde Kunden zugewiesen"
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr "Lagerartikel ist abgelaufen"
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr "Lagerartikel läuft demnächst ab"
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr "Serialisierter Lagerartikel wurde zugewiesen"
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr "Lagerartikel wurde vollständig zugewiesen"
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr "Lagerartikel wurde teilweise zugewiesen"
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr "Lagerartikel in anderem Element verbaut"
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr "Lagerartikel abgewiesen"
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr "Lagerartikel verloren"
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr "Lagerartikel zerstört"
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr "gelöscht"
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr "Inventur"
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr "Zuliefererteil nicht angegeben"
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr "Keine zur Anfrage passenden Lagerartikel"
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr "Teile"
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr "lose"
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr "Lagerorte"
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr "unbekannter Lagerort"
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr "Status setzen"
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr "Status Code setzen"
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr "Status Code muss ausgewählt werden"
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr "Ungültiges Datum"
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr "Details"
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr "Standort nicht mehr vorhanden"
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr "Bestellung existiert nicht mehr"
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr "Kunde existiert nicht mehr"
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr "Lagerartikel existiert nicht mehr"
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr "Hinzugefügt"
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr "Entfernt"
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr "Tracking-Eintrag bearbeiten"
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr "Tracking-Eintrag löschen"
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr "Keine installierten Elemente"
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr "Lagerartikel entfernen"
@@ -9061,18 +9263,26 @@ msgid "Move stock"
msgstr "Bestand verschieben"
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr "Ausgewählte Positionen bestellen"
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr "Status ändern"
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr "Status ändern"
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr "Ausgewählte Positionen löschen"
@@ -9108,35 +9318,35 @@ msgstr "Berechtigungen"
msgid "Important dates"
msgstr "wichtige Daten"
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr "Berechtigung geändert"
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr "Gruppe"
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr "Ansicht"
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr "Berechtigung Einträge anzuzeigen"
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr "Berechtigung Einträge zu erstellen"
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr "Ändern"
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr "Berechtigungen Einträge zu ändern"
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr "Berechtigung Einträge zu löschen"
diff --git a/InvenTree/locale/el/LC_MESSAGES/django.po b/InvenTree/locale/el/LC_MESSAGES/django.po
index 8882c2081b..0cc31b6263 100644
--- a/InvenTree/locale/el/LC_MESSAGES/django.po
+++ b/InvenTree/locale/el/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:46\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Language: el_GR\n"
@@ -34,50 +34,50 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr ""
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr ""
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr ""
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr ""
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr ""
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr ""
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr ""
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr ""
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr ""
@@ -123,7 +123,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr ""
@@ -136,12 +136,12 @@ msgstr ""
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr ""
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr ""
@@ -153,10 +153,10 @@ msgstr ""
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr ""
@@ -202,8 +202,8 @@ msgstr ""
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr ""
@@ -212,23 +212,23 @@ msgstr ""
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr ""
@@ -248,83 +248,83 @@ msgstr ""
msgid "Filename"
msgstr ""
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr ""
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr ""
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr ""
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr ""
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr ""
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr ""
@@ -349,14 +349,14 @@ msgstr ""
msgid "Placed"
msgstr ""
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr ""
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr ""
@@ -370,7 +370,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr ""
@@ -395,83 +395,87 @@ msgstr ""
msgid "Rejected"
msgstr ""
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr ""
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr ""
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr ""
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr ""
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr ""
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr ""
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr ""
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr ""
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr ""
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr ""
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr ""
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr ""
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr ""
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr ""
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr ""
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr ""
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr ""
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr ""
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr ""
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr ""
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr ""
@@ -661,7 +665,7 @@ msgstr ""
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr ""
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -695,7 +699,7 @@ msgstr ""
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr ""
@@ -776,7 +781,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr ""
@@ -830,27 +835,27 @@ msgstr ""
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr ""
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr ""
@@ -883,7 +888,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -891,51 +896,52 @@ msgstr ""
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr ""
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr ""
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr ""
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr ""
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr ""
@@ -1067,33 +1073,33 @@ msgstr ""
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr ""
@@ -1211,7 +1217,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr ""
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr ""
@@ -1347,7 +1353,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr ""
@@ -1489,7 +1495,7 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -1651,7 +1657,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr ""
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr ""
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr ""
@@ -2347,8 +2361,8 @@ msgstr ""
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr ""
@@ -2359,7 +2373,7 @@ msgstr ""
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr ""
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr ""
@@ -2403,8 +2417,8 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr ""
@@ -2431,7 +2445,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr ""
@@ -2506,7 +2520,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr ""
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr ""
@@ -2571,7 +2585,7 @@ msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr ""
@@ -2590,14 +2604,14 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr ""
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr ""
@@ -2611,7 +2625,7 @@ msgstr ""
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr ""
@@ -2633,8 +2647,8 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr ""
@@ -2706,7 +2720,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr ""
@@ -2728,7 +2742,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
@@ -2742,7 +2756,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr ""
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr ""
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr ""
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr ""
@@ -2843,7 +2857,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -2912,7 +2926,7 @@ msgstr ""
msgid "New Manufacturer"
msgstr ""
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr ""
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr ""
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr ""
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr ""
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr ""
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr ""
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr ""
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr ""
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr ""
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr ""
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr ""
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3530,7 +3544,7 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr ""
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr ""
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3822,99 +3836,43 @@ msgstr ""
msgid "Available Stock"
msgstr ""
-#: part/forms.py:63
-msgid "File Format"
-msgstr ""
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr ""
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr ""
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr ""
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr ""
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -4001,7 +3959,7 @@ msgstr ""
msgid "Part description"
msgstr ""
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
@@ -4014,7 +3972,7 @@ msgstr ""
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr ""
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr ""
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr ""
@@ -4162,7 +4120,7 @@ msgstr ""
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr ""
@@ -4171,7 +4129,7 @@ msgstr ""
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr ""
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr ""
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr ""
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr ""
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr ""
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr ""
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr ""
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr ""
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr ""
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr ""
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr ""
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr ""
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr ""
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr ""
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr ""
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr ""
@@ -4619,7 +4577,7 @@ msgstr ""
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr ""
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr ""
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr ""
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr ""
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr ""
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr ""
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr ""
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr ""
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr ""
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr ""
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr ""
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr ""
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr ""
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr ""
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,13 +7168,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr ""
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7464,7 +7650,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr ""
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr ""
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr ""
@@ -9106,35 +9316,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr ""
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr ""
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr ""
diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po
index 4f7aa77d3e..879766a7a9 100644
--- a/InvenTree/locale/es/LC_MESSAGES/django.po
+++ b/InvenTree/locale/es/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:47\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Spanish, Mexico\n"
"Language: es_MX\n"
@@ -34,50 +34,50 @@ msgstr "No se encontró ninguna acción coincidente"
msgid "Enter date"
msgstr "Ingrese fecha"
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr "Confirmar"
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr "Confirmar eliminación"
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr "Confirmar borrado de artículo"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr "Ingrese contraseña"
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr "Ingrese nueva contraseña"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr "Confirmar contraseña"
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr "Confirmar nueva contraseña"
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr "Seleccionar Categoría"
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr "Email (de nuevo)"
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr "Confirmación de email"
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr "Debe escribir el mismo correo electrónico cada vez."
@@ -123,7 +123,7 @@ msgstr "Falta archivo"
msgid "Missing external link"
msgstr "Falta enlace externo"
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr "Adjunto"
@@ -136,12 +136,12 @@ msgstr "Seleccionar archivo a adjuntar"
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr "Enlace"
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr "Enlace a URL externa"
@@ -153,10 +153,10 @@ msgstr "Comentario"
msgid "File comment"
msgstr "Comentario de archivo"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr "Usuario"
@@ -202,8 +202,8 @@ msgstr "Elección no válida"
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr "Nombre"
@@ -212,23 +212,23 @@ msgstr "Nombre"
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr "Descripción"
@@ -248,83 +248,83 @@ msgstr "Debe ser un número válido"
msgid "Filename"
msgstr "Nombre de archivo"
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr "Alemán"
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr "Griego"
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr "Inglés"
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr "Español"
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr "Español (México)"
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr ""
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr ""
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr ""
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr ""
@@ -349,14 +349,14 @@ msgstr ""
msgid "Placed"
msgstr ""
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr ""
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr ""
@@ -370,7 +370,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr ""
@@ -395,83 +395,87 @@ msgstr ""
msgid "Rejected"
msgstr ""
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr ""
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr ""
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr ""
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr ""
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr ""
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr ""
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr ""
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr ""
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr ""
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr ""
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr ""
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr ""
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr "Separar del artículo principal"
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr ""
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr ""
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr ""
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr ""
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr ""
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr ""
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr ""
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr ""
@@ -661,7 +665,7 @@ msgstr ""
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr ""
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -695,7 +699,7 @@ msgstr ""
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr ""
@@ -776,7 +781,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr ""
@@ -830,27 +835,27 @@ msgstr ""
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr ""
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr ""
@@ -883,7 +888,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -891,51 +896,52 @@ msgstr ""
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr ""
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr ""
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr ""
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr ""
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr "Debe proporcionar adjudicación de artículos"
@@ -1067,33 +1073,33 @@ msgstr ""
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr ""
@@ -1211,7 +1217,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr ""
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr ""
@@ -1347,7 +1353,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr ""
@@ -1489,7 +1495,7 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -1651,7 +1657,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr "Mostrar artículos de stock recientemente modificados en la página de inicio"
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr "Número de elementos de stock recientes a mostrar en la página de índice"
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr "Mostrar artículos de stock bajo en la página de inicio"
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr "Mostrar artículos agotados en la página de inicio"
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr "Mostrar elementos de stock necesarios para construir en la página de inicio"
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr "Mostrar artículos de stock caducados en la página de inicio"
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr "Mostrar elementos de stock obsoletos en la página de inicio"
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr ""
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr ""
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr ""
@@ -2347,8 +2361,8 @@ msgstr ""
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr ""
@@ -2359,7 +2373,7 @@ msgstr ""
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr ""
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr ""
@@ -2403,8 +2417,8 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr ""
@@ -2431,7 +2445,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr ""
@@ -2506,7 +2520,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr ""
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr ""
@@ -2571,7 +2585,7 @@ msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr ""
@@ -2590,14 +2604,14 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr ""
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr ""
@@ -2611,7 +2625,7 @@ msgstr ""
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr ""
@@ -2633,8 +2647,8 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr ""
@@ -2706,7 +2720,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr ""
@@ -2728,7 +2742,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
@@ -2742,7 +2756,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr ""
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr ""
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr "Artículos de Stock Asignados"
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr ""
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr ""
@@ -2843,7 +2857,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr "Artículos de Stock"
@@ -2912,7 +2926,7 @@ msgstr ""
msgid "New Manufacturer"
msgstr ""
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr ""
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr ""
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr ""
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr ""
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr ""
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr ""
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr ""
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr "Número de artículos recibidos"
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr ""
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr ""
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr ""
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3530,7 +3544,7 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr ""
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr ""
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3822,99 +3836,43 @@ msgstr ""
msgid "Available Stock"
msgstr ""
-#: part/forms.py:63
-msgid "File Format"
-msgstr ""
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr ""
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr "Parte principal"
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr "Seleccionar parte principal de la que copiar BOM"
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr "Borrar elementos BOM existentes"
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr ""
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr ""
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -4001,7 +3959,7 @@ msgstr ""
msgid "Part description"
msgstr ""
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
@@ -4014,7 +3972,7 @@ msgstr ""
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr ""
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr ""
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr ""
@@ -4162,7 +4120,7 @@ msgstr ""
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr ""
@@ -4171,7 +4129,7 @@ msgstr ""
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr ""
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr ""
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr ""
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr ""
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr ""
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr ""
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr ""
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr ""
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr ""
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr ""
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr ""
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr ""
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr ""
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr ""
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr ""
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr ""
@@ -4619,7 +4577,7 @@ msgstr ""
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr ""
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr ""
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr ""
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr ""
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr ""
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr ""
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr ""
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr ""
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr "Artículo de stock principal"
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr ""
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr "Último Inventario"
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr "Ningún inventario realizado"
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr "Artículo principal"
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr ""
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr ""
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr ""
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr ""
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr ""
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,13 +7168,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr ""
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr "Heredado de BOM principal"
@@ -7464,7 +7650,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr ""
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr ""
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr "Esta prueba está definida para una parte principal"
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr "Ubicación del stock principal"
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr "Inventario"
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr "Pedir artículos seleccionados"
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr "Eliminar artículos seleccionados"
@@ -9106,35 +9316,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr ""
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr "Permiso para ver artículos"
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr "Permiso para añadir artículos"
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr "Permisos para editar artículos"
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr "Permiso para eliminar artículos"
diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po
index 17c4d272c4..a11f3877e0 100644
--- a/InvenTree/locale/fr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/fr/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:46\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -34,50 +34,50 @@ msgstr "Aucune action correspondante trouvée"
msgid "Enter date"
msgstr "Entrer la date"
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr "Confirmer"
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr "Confirmer la suppression"
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr "Confirmer la suppression de cet élément"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr "Entrer le mot de passe"
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr "Entrer le nouveau mot de passe"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr "Confirmez le mot de passe"
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr "Confirmer le nouveau mot de passe"
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr "Sélectionnez une catégorie"
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr "Email (encore)"
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr "Confirmation de l'adresse email"
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr "Vous devez taper le même e-mail à chaque fois."
@@ -123,7 +123,7 @@ msgstr "Fichier manquant"
msgid "Missing external link"
msgstr "Lien externe manquant"
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr "Pièce jointe"
@@ -136,12 +136,12 @@ msgstr "Sélectionnez un fichier à joindre"
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr "Lien"
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr "Lien vers une url externe"
@@ -153,10 +153,10 @@ msgstr "Commentaire"
msgid "File comment"
msgstr "Commentaire du fichier"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr "Utilisateur"
@@ -202,8 +202,8 @@ msgstr "Choix invalide"
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr "Nom"
@@ -212,23 +212,23 @@ msgstr "Nom"
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr "Description"
@@ -248,83 +248,83 @@ msgstr "Doit être un nombre valide"
msgid "Filename"
msgstr "Nom du fichier"
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr "Allemand"
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr "Greek"
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr "Anglais"
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr "Spanish"
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr "Espagnol (Mexique)"
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr "Français"
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr "Hebrew"
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr "Italian"
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr "Japanese"
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr "Korean"
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr "Dutch"
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr "Norwegian"
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr "Polonais"
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr "Portugais"
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr "Russian"
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr "Swedish"
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr "Thai"
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr "Turc"
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr "Vietnamese"
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr "Chinese"
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr "Échec des contrôles de santé du système"
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr "En attente"
@@ -349,14 +349,14 @@ msgstr "En attente"
msgid "Placed"
msgstr "Placé"
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr "Terminé"
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr "Annulé"
@@ -370,7 +370,7 @@ msgstr "Perdu"
msgid "Returned"
msgstr "Retourné"
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr "Expédié"
@@ -395,83 +395,87 @@ msgstr "Détruit"
msgid "Rejected"
msgstr "Rejeté"
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr "Ancienne entrée de suivi de stock"
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr "Article en stock créé"
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr "Article de stock modifié"
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr "Numéro de série attribué"
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr "Stock comptabilisé"
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr "Stock ajouté manuellement"
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr "Stock supprimé manuellement"
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr "Emplacement modifié"
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr "Installé dans l'assemblage"
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr "Retiré de l'assemblage"
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr "Composant installé"
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr "Composant retiré"
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr "Séparer de l'élément parent"
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr "Fractionner l'élément enfant"
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr "Envoyé au client"
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr "Retourné par le client"
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr "La sortie de l'ordre de construction a été créée"
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr "Sortie de l'ordre de construction terminée"
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr "Reçu contre bon de commande"
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr "Fabrication"
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr "Quantité"
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr "Entrer la quantité désiré pour la fabrication"
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr "Numéros de série"
@@ -661,7 +665,7 @@ msgstr "Ordre de Fabrication"
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr "Ordres de Fabrication"
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr "Référence de l' Ordre de Fabrication"
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "Référence"
@@ -695,7 +699,7 @@ msgstr "BuildOrder associé a cette fabrication"
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr "BuildOrder associé a cette fabrication"
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr "Pièce"
@@ -776,7 +781,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr ""
@@ -830,27 +835,27 @@ msgstr ""
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr "Lien Externe"
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr "Notes"
@@ -883,7 +888,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -891,51 +896,52 @@ msgstr ""
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr "Assemblage"
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr "Article en stock"
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr ""
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr "Installer dans"
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr "Sortie d'assemblage"
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr "Emplacement"
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr "État"
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr "L'article doit être en stock"
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr "La quantité doit être supérieure à zéro"
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Quantité disponible ({q}) dépassée"
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr ""
@@ -1067,33 +1073,33 @@ msgstr "Supprimer l'assemblage"
msgid "Complete Build"
msgstr "Compléter l'assemblage"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr "Terminé"
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr "Commandes"
@@ -1211,7 +1217,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr "Destination"
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr "Commander les pièces requises"
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr "Commander des pièces"
@@ -1347,7 +1353,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr "Modifier les notes"
@@ -1489,7 +1495,7 @@ msgstr "{name.title()} Fichier"
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -1651,7 +1657,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr "Afficher les dernières pièces"
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr "Afficher les dernières modifications du stock"
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr ""
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr ""
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr "E-mail"
@@ -2347,8 +2361,8 @@ msgstr "Devise"
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr ""
@@ -2359,7 +2373,7 @@ msgstr ""
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr ""
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr ""
@@ -2403,8 +2417,8 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr "Valeur"
@@ -2431,7 +2445,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr ""
@@ -2506,7 +2520,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr ""
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr "Télécharger l'image depuis l'URL"
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr ""
@@ -2571,7 +2585,7 @@ msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr ""
@@ -2590,14 +2604,14 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr ""
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr ""
@@ -2611,7 +2625,7 @@ msgstr ""
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr ""
@@ -2633,8 +2647,8 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr "Nouvelle commande achat"
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr "Liste des Fournisseurs"
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr "Fabricants"
@@ -2706,7 +2720,7 @@ msgstr "Fabricants"
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr ""
@@ -2728,7 +2742,7 @@ msgstr "Pièces Internes"
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr "Fournisseurs"
@@ -2742,7 +2756,7 @@ msgstr "Supprimer les pièces du fournisseur"
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr "Supprimer"
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr ""
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr ""
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr ""
@@ -2843,7 +2857,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr "Stock"
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr "Tarif"
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr "Éléments en stock"
@@ -2912,7 +2926,7 @@ msgstr "Nouveau Fournisseur"
msgid "New Manufacturer"
msgstr "Nouveau Fabricant"
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr "Clients"
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr "expédié par"
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr "Nombre d'élement"
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr "Commande"
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr "Commande d’achat"
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr "Pièce fournisseur"
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr "Reçu"
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr "Nombre d'éléments reçus"
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr "Prix d'achat"
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr "Prix de vente"
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr "Ligne"
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr "Article"
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3530,7 +3544,7 @@ msgstr "Dupliquer la sélection"
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr "Supprimer la ligne"
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr ""
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3822,99 +3836,43 @@ msgstr ""
msgid "Available Stock"
msgstr ""
-#: part/forms.py:63
-msgid "File Format"
-msgstr ""
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr "Niveaux"
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr ""
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr ""
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr ""
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr ""
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -4001,7 +3959,7 @@ msgstr ""
msgid "Part description"
msgstr ""
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
@@ -4014,7 +3972,7 @@ msgstr ""
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr "Catégorie"
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr "Catégorie de la pièce"
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr "IPN"
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr "Nom de test"
@@ -4162,7 +4120,7 @@ msgstr ""
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr "Requis"
@@ -4171,7 +4129,7 @@ msgstr "Requis"
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr ""
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr "Modifier la catégorie"
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr "Modifier la catégorie"
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr "Supprimer la catégorie"
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr "Supprimer la catégorie"
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr ""
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr "Nouvelle catégorie"
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr ""
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr ""
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr ""
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr "Exporter"
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr ""
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr ""
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr ""
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr ""
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr ""
@@ -4619,7 +4577,7 @@ msgstr ""
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr ""
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr ""
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr "Afficher le prix de vente"
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr ""
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr ""
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr ""
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr ""
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr ""
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr "Propriétaire"
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr "Sélectionner un propriétaire"
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr ""
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr ""
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr ""
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr ""
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr ""
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr ""
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,13 +7168,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr "Niveaux"
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7464,7 +7650,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr ""
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr ""
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr "Détails"
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr ""
@@ -9106,35 +9316,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr ""
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr ""
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr ""
diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po
index 9938394fec..bdd7f77c53 100644
--- a/InvenTree/locale/he/LC_MESSAGES/django.po
+++ b/InvenTree/locale/he/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:47\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Language: he_IL\n"
@@ -34,50 +34,50 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr ""
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr ""
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr ""
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr ""
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr ""
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr ""
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr ""
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr ""
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr ""
@@ -123,7 +123,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr ""
@@ -136,12 +136,12 @@ msgstr ""
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr ""
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr ""
@@ -153,10 +153,10 @@ msgstr ""
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr ""
@@ -202,8 +202,8 @@ msgstr ""
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr ""
@@ -212,23 +212,23 @@ msgstr ""
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr ""
@@ -248,83 +248,83 @@ msgstr ""
msgid "Filename"
msgstr ""
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr ""
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr ""
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr ""
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr ""
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr ""
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr ""
@@ -349,14 +349,14 @@ msgstr ""
msgid "Placed"
msgstr ""
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr ""
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr ""
@@ -370,7 +370,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr ""
@@ -395,83 +395,87 @@ msgstr ""
msgid "Rejected"
msgstr ""
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr ""
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr ""
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr ""
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr ""
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr ""
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr ""
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr ""
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr ""
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr ""
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr ""
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr ""
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr ""
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr ""
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr ""
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr ""
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr ""
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr ""
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr ""
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr ""
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr ""
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr ""
@@ -661,7 +665,7 @@ msgstr ""
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr ""
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -695,7 +699,7 @@ msgstr ""
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr ""
@@ -776,7 +781,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr ""
@@ -830,27 +835,27 @@ msgstr ""
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr ""
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr ""
@@ -883,7 +888,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -891,51 +896,52 @@ msgstr ""
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr ""
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr ""
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr ""
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr ""
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr ""
@@ -1067,33 +1073,33 @@ msgstr ""
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr ""
@@ -1211,7 +1217,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr ""
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr ""
@@ -1347,7 +1353,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr ""
@@ -1489,7 +1495,7 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -1651,7 +1657,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr ""
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr ""
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr ""
@@ -2347,8 +2361,8 @@ msgstr ""
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr ""
@@ -2359,7 +2373,7 @@ msgstr ""
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr ""
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr ""
@@ -2403,8 +2417,8 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr ""
@@ -2431,7 +2445,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr ""
@@ -2506,7 +2520,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr ""
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr ""
@@ -2571,7 +2585,7 @@ msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr ""
@@ -2590,14 +2604,14 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr ""
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr ""
@@ -2611,7 +2625,7 @@ msgstr ""
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr ""
@@ -2633,8 +2647,8 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr ""
@@ -2706,7 +2720,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr ""
@@ -2728,7 +2742,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
@@ -2742,7 +2756,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr ""
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr ""
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr ""
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr ""
@@ -2843,7 +2857,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -2912,7 +2926,7 @@ msgstr ""
msgid "New Manufacturer"
msgstr ""
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr ""
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr ""
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr ""
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr ""
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr ""
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr ""
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr ""
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr ""
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr ""
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr ""
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr ""
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3530,7 +3544,7 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr ""
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr ""
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3822,99 +3836,43 @@ msgstr ""
msgid "Available Stock"
msgstr ""
-#: part/forms.py:63
-msgid "File Format"
-msgstr ""
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr ""
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr ""
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr ""
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr ""
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -4001,7 +3959,7 @@ msgstr ""
msgid "Part description"
msgstr ""
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
@@ -4014,7 +3972,7 @@ msgstr ""
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr ""
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr ""
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr ""
@@ -4162,7 +4120,7 @@ msgstr ""
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr ""
@@ -4171,7 +4129,7 @@ msgstr ""
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr ""
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr ""
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr ""
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr ""
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr ""
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr ""
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr ""
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr ""
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr ""
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr ""
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr ""
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr ""
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr ""
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr ""
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr ""
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr ""
@@ -4619,7 +4577,7 @@ msgstr ""
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr ""
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr ""
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr ""
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr ""
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr ""
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr ""
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr ""
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr ""
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr ""
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr ""
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr ""
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr ""
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr ""
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr ""
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,13 +7168,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr ""
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7464,7 +7650,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr ""
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr ""
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr ""
@@ -9106,35 +9316,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr ""
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr ""
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr ""
diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po
index 6ee9158635..db65ee73cc 100644
--- a/InvenTree/locale/id/LC_MESSAGES/django.po
+++ b/InvenTree/locale/id/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:47\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Language: id_ID\n"
@@ -34,50 +34,50 @@ msgstr "Aksi tidak ditemukan"
msgid "Enter date"
msgstr "Masukkan tanggal"
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr "Konfirmasi"
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr "Konfirmasi penghapusan"
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr "Konfirmasi penghapusan item"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr "Masukkan sandi"
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr "Masukkan kata sandi baru"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr "Konfirmasikan kata sandi"
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr "Konfirmasi sandi baru"
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr "Pilih Kategori"
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr "Email (ulang)"
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr "Konfirmasi alamat email"
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr ""
@@ -123,7 +123,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr ""
@@ -136,12 +136,12 @@ msgstr ""
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr ""
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr ""
@@ -153,10 +153,10 @@ msgstr ""
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr ""
@@ -202,8 +202,8 @@ msgstr ""
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr ""
@@ -212,23 +212,23 @@ msgstr ""
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr ""
@@ -248,83 +248,83 @@ msgstr ""
msgid "Filename"
msgstr ""
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr ""
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr ""
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr ""
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr ""
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr ""
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr ""
@@ -349,14 +349,14 @@ msgstr ""
msgid "Placed"
msgstr ""
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr ""
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr ""
@@ -370,7 +370,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr ""
@@ -395,83 +395,87 @@ msgstr ""
msgid "Rejected"
msgstr ""
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr ""
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr ""
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr ""
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr ""
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr ""
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr ""
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr ""
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr ""
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr ""
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr ""
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr ""
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr ""
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr ""
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr ""
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr ""
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr ""
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr ""
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr ""
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr ""
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr ""
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr ""
@@ -661,7 +665,7 @@ msgstr ""
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr ""
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -695,7 +699,7 @@ msgstr ""
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr ""
@@ -776,7 +781,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr ""
@@ -830,27 +835,27 @@ msgstr ""
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr ""
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr ""
@@ -883,7 +888,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -891,51 +896,52 @@ msgstr ""
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr ""
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr ""
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr ""
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr ""
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr ""
@@ -1067,33 +1073,33 @@ msgstr ""
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr ""
@@ -1211,7 +1217,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr ""
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr ""
@@ -1347,7 +1353,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr ""
@@ -1489,7 +1495,7 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -1651,7 +1657,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr ""
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr ""
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr ""
@@ -2347,8 +2361,8 @@ msgstr ""
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr ""
@@ -2359,7 +2373,7 @@ msgstr ""
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr ""
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr ""
@@ -2403,8 +2417,8 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr ""
@@ -2431,7 +2445,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr ""
@@ -2506,7 +2520,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr ""
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr ""
@@ -2571,7 +2585,7 @@ msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr ""
@@ -2590,14 +2604,14 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr ""
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr ""
@@ -2611,7 +2625,7 @@ msgstr ""
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr ""
@@ -2633,8 +2647,8 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr ""
@@ -2706,7 +2720,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr ""
@@ -2728,7 +2742,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
@@ -2742,7 +2756,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr ""
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr ""
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr ""
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr ""
@@ -2843,7 +2857,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -2912,7 +2926,7 @@ msgstr ""
msgid "New Manufacturer"
msgstr ""
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr ""
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr ""
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr ""
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr ""
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr ""
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr ""
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr ""
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr ""
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr ""
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr ""
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr ""
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3530,7 +3544,7 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr ""
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr ""
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3822,99 +3836,43 @@ msgstr ""
msgid "Available Stock"
msgstr ""
-#: part/forms.py:63
-msgid "File Format"
-msgstr ""
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr ""
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr ""
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr ""
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr ""
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -4001,7 +3959,7 @@ msgstr ""
msgid "Part description"
msgstr ""
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
@@ -4014,7 +3972,7 @@ msgstr ""
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr ""
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr ""
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr ""
@@ -4162,7 +4120,7 @@ msgstr ""
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr ""
@@ -4171,7 +4129,7 @@ msgstr ""
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr ""
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr ""
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr ""
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr ""
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr ""
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr ""
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr ""
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr ""
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr ""
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr ""
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr ""
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr ""
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr ""
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr ""
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr ""
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr ""
@@ -4619,7 +4577,7 @@ msgstr ""
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr ""
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr ""
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr ""
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr ""
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr ""
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr ""
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr ""
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr ""
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr ""
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr ""
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr ""
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr ""
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr ""
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr ""
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,13 +7168,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr ""
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7464,7 +7650,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr ""
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr ""
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr ""
@@ -9106,35 +9316,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr ""
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr ""
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr ""
diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po
index 685dd24ab4..4447f6daa7 100644
--- a/InvenTree/locale/it/LC_MESSAGES/django.po
+++ b/InvenTree/locale/it/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:47\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -34,50 +34,50 @@ msgstr "Nessuna azione corrispondente trovata"
msgid "Enter date"
msgstr "Inserisci la data"
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr "Conferma"
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr "Conferma eliminazione"
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr "Conferma eliminazione elementi"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr "Inserire la password"
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr "Inserire una nuova password"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr "Conferma la password"
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr "Conferma la nuova password"
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr "Selezione una categoria"
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr "Email (ancora)"
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr "Conferma indirizzo email"
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr "È necessario digitare la stessa e-mail ogni volta."
@@ -117,13 +117,13 @@ msgstr "Il numero dei numeri seriali univoci ({s}) deve essere uguale alla quant
#: InvenTree/models.py:120
msgid "Missing file"
-msgstr ""
+msgstr "File mancante"
#: InvenTree/models.py:121
msgid "Missing external link"
-msgstr ""
+msgstr "Link esterno mancante"
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr "Allegato"
@@ -136,12 +136,12 @@ msgstr "Seleziona file da allegare"
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr "Link"
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr "Link a URL esterno"
@@ -153,10 +153,10 @@ msgstr "Commento"
msgid "File comment"
msgstr "Commento del file"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr "Utente"
@@ -202,8 +202,8 @@ msgstr "Scelta non valida"
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr "Nome"
@@ -212,23 +212,23 @@ msgstr "Nome"
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr "Descrizione"
@@ -248,83 +248,83 @@ msgstr "Deve essere un numero valido"
msgid "Filename"
msgstr "Nome del file"
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr "Tedesco"
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr "Greco"
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr "Inglese"
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr "Spagnolo"
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr "Spagnolo (Messicano)"
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr "Francese"
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr "Ebraico"
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr "Italiano"
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr "Giapponese"
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr "Coreano"
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr "Olandese"
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr "Norvegese"
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr "Polacco"
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr "Portoghese"
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr "Russo"
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr "Svedese"
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr "Thailandese"
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr "Turco"
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr "Vietnamita"
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr "Cinese"
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr "Controlli di sistema InvenTree falliti"
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr "In attesa"
@@ -349,14 +349,14 @@ msgstr "In attesa"
msgid "Placed"
msgstr "Inviato"
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr "Completo"
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr "Annullato"
@@ -370,7 +370,7 @@ msgstr "Perso"
msgid "Returned"
msgstr "Reso"
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr "Spedito"
@@ -395,83 +395,87 @@ msgstr "Distrutto"
msgid "Rejected"
msgstr "Respinto"
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr "Voce di tracciamento stock preesistente"
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr "Elemento stock creato"
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr "Elemento stock modificato"
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr "Numero di serie assegnato"
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr "Stock contato"
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr "Stock aggiunto manualmente"
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr "Stock rimosso manualmente"
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr "Posizione cambiata"
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr "Installato nell'assemblaggio"
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr "Rimosso dall'assemblaggio"
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr "Componente installato"
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr "Elemento componente rimosso"
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr "Diviso dall'elemento genitore"
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr "Dividi elemento figlio"
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr "Inviato al cliente"
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr "Restituito dal cliente"
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr "Genera l'output dell'ordine creato"
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr "Build order output completato"
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr "Ricevuto contro l'ordine di acquisto"
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr "Produzione"
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr "Quantità"
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr "Inserisci la quantità per l'output di compilazione"
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr "Codice Seriale"
@@ -661,7 +665,7 @@ msgstr ""
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr ""
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "Riferimento"
@@ -695,7 +699,7 @@ msgstr ""
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr "Articolo"
@@ -776,7 +781,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr ""
@@ -830,27 +835,27 @@ msgstr ""
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr "Collegamento esterno"
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr "Note"
@@ -883,7 +888,7 @@ msgstr "La quantità assegnata ({q}) non deve essere maggiore della quantità di
msgid "Stock item is over-allocated"
msgstr "L'articolo in giacenza è sovrallocato"
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr "La quantità di assegnazione deve essere maggiore di zero"
@@ -891,51 +896,52 @@ msgstr "La quantità di assegnazione deve essere maggiore di zero"
msgid "Quantity must be 1 for serialized stock"
msgstr "La quantità deve essere 1 per lo stock serializzato"
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr "Articolo in giacenza selezionato non trovato nel BOM"
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr "Articoli in magazzino"
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr "Origine giacenza articolo"
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr "Installa in"
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr "Destinazione articolo in giacenza"
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr "Posizione"
@@ -975,11 +981,11 @@ msgstr "Posizione per gli output di build completati"
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr "Stato"
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr "L'articolo deve essere disponibile"
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr "La quantità deve essere maggiore di zero"
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Quantità disponibile ({q}) superata"
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr "Deve essere indicata l'allocazione dell'articolo"
@@ -1067,33 +1073,33 @@ msgstr ""
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr "Completato"
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr "Ordini di Vendita"
@@ -1211,7 +1217,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr "Lo stock può essere prelevato da qualsiasi posizione disponibile."
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr "Destinazione"
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr "Ordina articoli richiesti"
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr "Ordine Articoli"
@@ -1347,7 +1353,7 @@ msgstr "Genera Note"
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr "Modifica Note"
@@ -1489,7 +1495,7 @@ msgstr "{name.title()} File"
msgid "Select {name} file to upload"
msgstr "Seleziona il file {name} da caricare"
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole"
@@ -1651,7 +1657,7 @@ msgstr "Template"
msgid "Parts are templates by default"
msgstr "Gli articoli sono modelli per impostazione predefinita"
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr "Mostra le categorie sottoscritte"
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr "Mostra le categorie dei componenti sottoscritti nella homepage"
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr "Mostra ultimi articoli"
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr "Visualizzazione dell'etichetta in linea"
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "Visualizza le etichette PDF nel browser, invece di scaricare come file"
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr "Visualizzazione dell'etichetta in linea"
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "Visualizza le etichette PDF nel browser, invece di scaricare come file"
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr "Risultati Dell'Anteprima Di Ricerca"
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr "Prezzo"
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr "Numero di telefono di contatto"
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr "Email"
@@ -2347,8 +2361,8 @@ msgstr "Valuta"
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr "Articolo di base"
@@ -2359,7 +2373,7 @@ msgstr "Seleziona articolo"
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr "Descrizione articolo costruttore"
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr "Codice articolo produttore"
@@ -2403,8 +2417,8 @@ msgstr "Nome parametro"
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr "Valore"
@@ -2431,7 +2445,7 @@ msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr "Onere minimo (ad esempio tassa di stoccaggio)"
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr "Confezionamento"
@@ -2506,7 +2520,7 @@ msgstr "Codice valuta"
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr "Azienda"
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr "Scarica immagine dall'URL"
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr "Cliente"
@@ -2571,7 +2585,7 @@ msgstr "Carica immagine"
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr "Articoli fornitore"
@@ -2590,14 +2604,14 @@ msgstr "Nuovo fornitore articolo"
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr "Opzioni"
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr "Articoli ordinati"
@@ -2611,7 +2625,7 @@ msgstr "Cancella articoli"
msgid "Delete Parts"
msgstr "Cancella articoli"
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr ""
@@ -2633,8 +2647,8 @@ msgstr "Giacenza Fornitore"
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr "Elenco dei fornitori"
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr "Produttori"
@@ -2706,7 +2720,7 @@ msgstr "Produttori"
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr "Articoli ordinati"
@@ -2728,7 +2742,7 @@ msgstr "Articolo interno"
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr "Fornitori"
@@ -2742,7 +2756,7 @@ msgstr "Elimina articolo fornitore"
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr "Elimina"
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr "Elimina il parametro"
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr "Aggiungi parametro"
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr "Articolo Fornitore"
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr "Fornitore articolo in giacenza"
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr "Crea nuova allocazione magazzino"
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr "Nuovo Elemento in giacenza"
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr "Ordini articoli fornitore"
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr "Ordine Articolo"
@@ -2843,7 +2857,7 @@ msgstr "Informazioni Prezzi"
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr "Aggiungi riduzione prezzo"
@@ -2851,11 +2865,11 @@ msgstr "Aggiungi riduzione prezzo"
msgid "No price break information found"
msgstr "Nessuna informazione di riduzione di prezzo trovata"
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr "Elimina riduzione di prezzo"
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr "Cancella riduzione di prezzo"
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr "Magazzino"
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr "Prezzi"
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr "Articoli in magazzino"
@@ -2912,7 +2926,7 @@ msgstr "Nuovo Fornitore"
msgid "New Manufacturer"
msgstr "Nuovo Produttore"
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr "Clienti"
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr ""
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr ""
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr ""
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr ""
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr "Articolo Fornitore"
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr ""
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr ""
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr ""
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "La quantità di ripartizione non puo' superare la disponibilità della giacenza"
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr ""
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr ""
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr "Inserisci la quantità assegnata alla giacenza"
@@ -3530,7 +3544,7 @@ msgstr "Duplica selezionati"
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr "Elimina riga"
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr ""
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr "Specifica la posizione per lo stock iniziale"
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr "Posizione Predefinita"
@@ -3822,99 +3836,43 @@ msgstr "Posizione Predefinita"
msgid "Available Stock"
msgstr "Disponibilità in magazzino"
-#: part/forms.py:63
-msgid "File Format"
-msgstr ""
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr ""
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr ""
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr "convalida"
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr "Conferma che la Distinta Base (BOM) è corretta"
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr "Seleziona categoria articolo"
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr "Digita la quantità per il calcolo del prezzo"
@@ -3930,24 +3888,24 @@ msgstr "Keywords predefinite"
msgid "Default keywords for parts in this category"
msgstr "Parole chiave predefinite per gli articoli in questa categoria"
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Categoria Articoli"
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr "Categorie Articolo"
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr "Articoli"
@@ -4001,7 +3959,7 @@ msgstr "Variante Di"
msgid "Part description"
msgstr "Descrizione articolo"
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr "Parole Chiave"
@@ -4014,7 +3972,7 @@ msgstr "Parole chiave per migliorare la visibilità nei risultati di ricerca"
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr "Categoria"
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr "Categoria articolo"
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr "IPN - Numero di riferimento interno"
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr ""
@@ -4162,7 +4120,7 @@ msgstr "Descrizione Di Prova"
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr ""
@@ -4171,7 +4129,7 @@ msgstr ""
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr "Consenti Le Varianti"
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr "Sei iscritto alle notifiche di questa categoria"
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr "Sottoscrivi notifiche per questa categoria"
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr "Azioni Categoria"
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr "Modifica categoria"
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr "Modifica Categoria"
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr "Elimina la categoria"
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr "Cancella categoria"
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr "Crea nuova categoria articoli"
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr "Nuova categoria"
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr "Percorso Categoria"
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr "Categoria articolo di livello superiore"
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr "Sottocategorie"
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr "Articoli (incluse le sottocategorie)"
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr "Esporta dati articolo"
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr "Esporta"
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr "Crea nuovo articolo"
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr "Nuovo articolo"
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr "Imposta categoria"
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr "Imposta Categoria"
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr "Stampa Etichette"
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr "Esporta Dati"
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr "Parametri articolo"
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr "Crea Categoria Articolo"
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr "Crea Articolo"
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr ""
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr "Assegnazione Ordine Di Vendita"
@@ -4619,7 +4577,7 @@ msgstr "Distinta base"
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr "Articoli correlati"
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr "Azioni Barcode"
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "Mostra QR Code"
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr "Stampa Etichetta"
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr "Azioni magazzino"
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr "In magazzino"
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr "Ordinato"
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr "Costo Totale"
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr "Imposta categoria per i seguenti articoli"
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr "Nessuna giacenza"
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr "Esporta Distinta base"
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr "Modifica Categoria Articoli"
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr "Elimina categoria"
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr "La Categoria articoli è stata eliminata"
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr "Crea Template Parametro Categoria"
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr "Modifica Modello Parametro Categoria"
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr "Elimina Modello Parametro Categoria"
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr ""
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr "Data"
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr "Seriale"
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr "La quantità è richiesta"
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr "Data di Scadenza"
@@ -5490,12 +5449,12 @@ msgstr "Conferma la disinstallazione"
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr "Seleziona Owner"
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr "Articolo base"
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "Ubicazione magazzino"
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr "Installato In"
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr "Quantità disponibile"
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr "Elimina al esaurimento"
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr "Posizione magazzino di destinazione"
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr "Scansiona nella posizione"
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr "Conta giacenza"
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr "Aggiungi giacenza"
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr "Rimuovi giacenza"
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr "Trasferisci giacenza"
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr "pagina precedente"
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr "pagina successiva"
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr "Ultimo aggiornamento"
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr "Ultimo Inventario"
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr "Nessun inventario eseguito"
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr "Nessuna posizione impostata"
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr "Articoli controllati"
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr "Azioni posizione"
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr "Modifica la posizione"
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr "Elimina la posizione"
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr "Crea nuova posizione di magazzino"
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr "Nuova Posizione"
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr "Posizione stock di livello superiore"
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr "Non sei nell'elenco dei proprietari di questa posizione. Questa posizione di giacenza non può essere modificata."
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr "Sottoallocazioni"
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr "Posizioni magazzino"
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr "Azioni di stampa"
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr "Stampa etichette"
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr "Crea una nuova Posizione di Giacenza"
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr "Risultati della Ricerca"
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr "Impostazioni Server"
msgid "Login Settings"
msgstr "Impostazioni di accesso"
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr "Registrati"
@@ -6648,7 +6659,7 @@ msgstr "Nome"
msgid "Last Name"
msgstr "Cognome"
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr "Re-invia il codice di verifica"
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr "Rimuovi"
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr "Attenzione:"
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr "Aggiungi indirizzo email"
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr "Inserisci il tuo indirizzo email"
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr "Aggiungi Email"
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr ""
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr "Informazioni Versione InvenTree"
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7007,6 +7066,71 @@ msgstr ""
msgid "View in administration panel"
msgstr "Visualizza nel pannello di amministrazione"
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7045,13 +7169,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr "Quantità richiesta"
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7240,7 +7364,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7282,91 +7406,153 @@ msgstr "Controlla Nella Posizione"
msgid "Barcode does not match a valid location"
msgstr "Il codice a barre non corrisponde a una posizione valida"
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr "Formato"
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr ""
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7465,7 +7651,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7510,9 +7696,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7520,7 +7706,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7683,20 +7869,20 @@ msgstr "Mostra operazione non consentita"
msgid "Enter a valid number"
msgstr "Inserisci un numero valido"
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr "Nessun risultato trovato"
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr "Ricerca"
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr "Cancella input"
@@ -7709,7 +7895,7 @@ msgid "NO"
msgstr "NO"
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7889,14 +8075,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr "Formato"
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7909,7 +8087,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr "Quantità da ricevere"
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr "Stato giacenza"
@@ -7958,7 +8136,7 @@ msgid "Total"
msgstr "Totale"
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr "Prezzo Unitario"
@@ -8043,7 +8221,7 @@ msgid "Delete Stock Allocation"
msgstr "Elimina posizione giacenza"
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr "Spedito al cliente"
@@ -8207,92 +8385,92 @@ msgstr "Parte vendibile"
msgid "No variants found"
msgstr "Nessuna variante trovata"
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr "Nessun articolo trovato"
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr "Nessuna categoria"
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr "In esaurimento"
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr "Visualizza come elenco"
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr "Visualizza come griglia"
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr "Visualizza come struttura ad albero"
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr "Categoria sottoscritta"
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr "Percorso"
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr "Modifica ${human_name}"
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr "Elimina ${human_name}"
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr "Prezzo Singolo"
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8366,316 +8544,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr "Posizione giacenza principale"
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr "Nuova posizione giacenza"
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr "Inserisci quantità iniziale per questo articolo in giacenza"
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr "Inserire i numeri di serie per la nuova giacenza (o lasciare vuoto)"
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr "Crea nuova allocazione magazzino"
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr "Creato più elementi stock"
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr "Esporta giacenza"
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr "Includi sotto allocazioni"
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr "Includi elementi in giacenza nelle sottoallocazioni"
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr "Trasferisci giacenza"
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr "Sposta"
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr "Conta giacenza"
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr "Conta"
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr "Rimuovi giacenza"
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr "Prendi"
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr "Aggiungi giacenza"
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr "Aggiungi"
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr "Elimina Stock"
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr "Specificare la quantità di magazzino"
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr "Devi selezionare almeno un articolo disponibile"
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr "PASS"
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr "FAIL"
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr "NESSUN RISULTATO"
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr "Aggiungi risultato test"
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr "Nessun risultato di prova trovato"
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr "In produzione"
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr "Installato nell'elemento stock"
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr "Assegnato all'ordine di vendita"
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr "Nessuna giacenza impostata"
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr "L'articolo di magazzino è in produzione"
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr "Articolo stock assegnato al cliente"
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr "L'articolo stock è scaduto"
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr "Articolo in giacenza prossimo alla scadenza"
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr "L'elemento stock è stato installato in un altro articolo"
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr "L'articolo stock è stato rifiutato"
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr "Esaurito"
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr "Inventario"
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr "elementi"
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr "posizione"
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr "Posizione non definita"
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr "Data non valida"
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr "La posizione non esiste più"
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr "Aggiunto"
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr "Rimosso"
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9060,18 +9262,26 @@ msgid "Move stock"
msgstr "Sposta giacenza"
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr "Ordina articolo selezionato"
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr "Modifica stato"
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr "Modifica stato stock"
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr "Elimina articoli selezionati"
@@ -9107,35 +9317,35 @@ msgstr "Permessi"
msgid "Important dates"
msgstr "Date Importanti"
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr "Impostazione autorizzazioni"
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr "Gruppo"
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr "Visualizza"
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr "Autorizzazione a visualizzare gli articoli"
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr "Autorizzazione ad aggiungere elementi"
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr "Modificare"
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr "Permessi per modificare gli elementi"
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr "Autorizzazione ad eliminare gli elementi"
diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po
index 84bec02c3a..2452dd64d8 100644
--- a/InvenTree/locale/ja/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ja/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:47\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Language: ja_JP\n"
@@ -34,50 +34,50 @@ msgstr "一致するアクションが見つかりませんでした"
msgid "Enter date"
msgstr "日付を入力する"
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr "確認"
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr "削除の確認"
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr "削除の確認"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr "パスワードを入力してください"
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr "新しいパスワードを入力してください。"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr "パスワードの確認"
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr "新しいパスワードの確認"
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr "カテゴリの選択"
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr ""
@@ -123,7 +123,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr "添付ファイル"
@@ -136,12 +136,12 @@ msgstr "添付ファイルを選択"
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr ""
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr ""
@@ -153,10 +153,10 @@ msgstr "コメント:"
msgid "File comment"
msgstr "ファイルコメント"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr "ユーザー"
@@ -202,8 +202,8 @@ msgstr "無効な選択です"
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr "お名前"
@@ -212,23 +212,23 @@ msgstr "お名前"
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr "説明"
@@ -248,83 +248,83 @@ msgstr "有効な数字でなければなりません"
msgid "Filename"
msgstr ""
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr "ドイツ語"
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr "英語"
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr "フランス語"
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr "ポーランド語"
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr "トルコ語"
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr ""
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr "InvenTree システムのヘルスチェックに失敗しました"
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr "処理待ち"
@@ -349,14 +349,14 @@ msgstr "処理待ち"
msgid "Placed"
msgstr "設置済"
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr "完了"
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr "キャンセル済"
@@ -370,7 +370,7 @@ msgstr "紛失"
msgid "Returned"
msgstr "返品済"
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr "発送済み"
@@ -395,83 +395,87 @@ msgstr ""
msgid "Rejected"
msgstr "却下済み"
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr ""
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr ""
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr ""
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr ""
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr ""
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr ""
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr ""
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr ""
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr ""
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr ""
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr ""
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr ""
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr ""
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr ""
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr ""
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr ""
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr ""
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr ""
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr ""
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr ""
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr ""
@@ -661,7 +665,7 @@ msgstr ""
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr ""
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -695,7 +699,7 @@ msgstr ""
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr "パーツ"
@@ -776,7 +781,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr ""
@@ -830,27 +835,27 @@ msgstr ""
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr ""
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr ""
@@ -883,7 +888,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -891,51 +896,52 @@ msgstr ""
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr "パーツを割り当てるためにビルドする"
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr ""
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr ""
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr ""
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr ""
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr ""
@@ -1067,33 +1073,33 @@ msgstr ""
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr ""
@@ -1211,7 +1217,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr "注文必須パーツ"
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr "パーツの注文"
@@ -1347,7 +1353,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr ""
@@ -1489,7 +1495,7 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -1651,7 +1657,7 @@ msgstr "テンプレート"
msgid "Parts are templates by default"
msgstr "パーツはデフォルトのテンプレートです"
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr ""
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr ""
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr ""
@@ -2347,8 +2361,8 @@ msgstr ""
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr ""
@@ -2359,7 +2373,7 @@ msgstr ""
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr ""
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr "メーカー・パーツ"
@@ -2403,8 +2417,8 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr ""
@@ -2431,7 +2445,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr ""
@@ -2506,7 +2520,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr ""
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr ""
@@ -2571,7 +2585,7 @@ msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr "サプライヤー・パーツ"
@@ -2590,14 +2604,14 @@ msgstr "新しいサプライヤー・パーツ"
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr ""
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr "パーツの注文"
@@ -2611,7 +2625,7 @@ msgstr "パーツを削除"
msgid "Delete Parts"
msgstr "パーツを削除"
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr "メーカー・パーツ"
@@ -2633,8 +2647,8 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr ""
@@ -2706,7 +2720,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr "パーツの注文"
@@ -2728,7 +2742,7 @@ msgstr "内部パーツ"
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
@@ -2742,7 +2756,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr ""
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr ""
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr ""
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr ""
@@ -2843,7 +2857,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -2912,7 +2926,7 @@ msgstr ""
msgid "New Manufacturer"
msgstr ""
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr ""
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr ""
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr ""
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr ""
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr ""
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr ""
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr ""
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr ""
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr ""
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr ""
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr ""
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3530,7 +3544,7 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr ""
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr ""
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3822,99 +3836,43 @@ msgstr ""
msgid "Available Stock"
msgstr ""
-#: part/forms.py:63
-msgid "File Format"
-msgstr ""
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr ""
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr ""
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr ""
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr ""
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr "パーツ"
@@ -4001,7 +3959,7 @@ msgstr ""
msgid "Part description"
msgstr ""
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
@@ -4014,7 +3972,7 @@ msgstr ""
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr ""
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr ""
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr ""
@@ -4162,7 +4120,7 @@ msgstr ""
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr ""
@@ -4171,7 +4129,7 @@ msgstr ""
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr ""
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr ""
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr ""
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr ""
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr ""
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr ""
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr ""
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr ""
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr ""
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr ""
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr ""
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr "新規パーツ"
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr ""
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr ""
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr ""
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr ""
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr ""
@@ -4619,7 +4577,7 @@ msgstr ""
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr ""
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr ""
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr ""
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr ""
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr ""
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr ""
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr ""
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr ""
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr ""
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr ""
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr ""
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr ""
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr ""
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr ""
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,13 +7168,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr ""
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7464,7 +7650,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr ""
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr ""
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr ""
@@ -9106,35 +9316,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr ""
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr ""
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr ""
diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po
index 033d2a192a..762ba0d084 100644
--- a/InvenTree/locale/ko/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ko/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:47\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Language: ko_KR\n"
@@ -34,50 +34,50 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr ""
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr ""
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr ""
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr ""
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr ""
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr ""
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr ""
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr ""
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr ""
@@ -123,7 +123,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr ""
@@ -136,12 +136,12 @@ msgstr ""
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr ""
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr ""
@@ -153,10 +153,10 @@ msgstr ""
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr ""
@@ -202,8 +202,8 @@ msgstr ""
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr ""
@@ -212,23 +212,23 @@ msgstr ""
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr ""
@@ -248,83 +248,83 @@ msgstr ""
msgid "Filename"
msgstr ""
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr ""
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr ""
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr ""
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr ""
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr ""
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr ""
@@ -349,14 +349,14 @@ msgstr ""
msgid "Placed"
msgstr ""
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr ""
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr ""
@@ -370,7 +370,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr ""
@@ -395,83 +395,87 @@ msgstr ""
msgid "Rejected"
msgstr ""
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr ""
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr ""
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr ""
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr ""
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr ""
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr ""
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr ""
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr ""
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr ""
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr ""
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr ""
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr ""
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr ""
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr ""
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr ""
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr ""
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr ""
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr ""
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr ""
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr ""
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr ""
@@ -661,7 +665,7 @@ msgstr ""
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr ""
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -695,7 +699,7 @@ msgstr ""
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr ""
@@ -776,7 +781,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr ""
@@ -830,27 +835,27 @@ msgstr ""
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr ""
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr ""
@@ -883,7 +888,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -891,51 +896,52 @@ msgstr ""
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr ""
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr ""
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr ""
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr ""
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr ""
@@ -1067,33 +1073,33 @@ msgstr ""
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr ""
@@ -1211,7 +1217,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr ""
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr ""
@@ -1347,7 +1353,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr ""
@@ -1489,7 +1495,7 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -1651,7 +1657,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr ""
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr ""
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr ""
@@ -2347,8 +2361,8 @@ msgstr ""
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr ""
@@ -2359,7 +2373,7 @@ msgstr ""
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr ""
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr ""
@@ -2403,8 +2417,8 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr ""
@@ -2431,7 +2445,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr ""
@@ -2506,7 +2520,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr ""
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr ""
@@ -2571,7 +2585,7 @@ msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr ""
@@ -2590,14 +2604,14 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr ""
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr ""
@@ -2611,7 +2625,7 @@ msgstr ""
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr ""
@@ -2633,8 +2647,8 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr ""
@@ -2706,7 +2720,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr ""
@@ -2728,7 +2742,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
@@ -2742,7 +2756,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr ""
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr ""
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr ""
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr ""
@@ -2843,7 +2857,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -2912,7 +2926,7 @@ msgstr ""
msgid "New Manufacturer"
msgstr ""
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr ""
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr ""
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr ""
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr ""
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr ""
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr ""
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr ""
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr ""
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr ""
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr ""
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr ""
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3530,7 +3544,7 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr ""
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr ""
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3822,99 +3836,43 @@ msgstr ""
msgid "Available Stock"
msgstr ""
-#: part/forms.py:63
-msgid "File Format"
-msgstr ""
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr ""
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr ""
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr ""
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr ""
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -4001,7 +3959,7 @@ msgstr ""
msgid "Part description"
msgstr ""
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
@@ -4014,7 +3972,7 @@ msgstr ""
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr ""
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr ""
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr ""
@@ -4162,7 +4120,7 @@ msgstr ""
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr ""
@@ -4171,7 +4129,7 @@ msgstr ""
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr ""
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr ""
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr ""
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr ""
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr ""
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr ""
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr ""
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr ""
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr ""
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr ""
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr ""
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr ""
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr ""
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr ""
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr ""
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr ""
@@ -4619,7 +4577,7 @@ msgstr ""
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr ""
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr ""
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr ""
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr ""
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr ""
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr ""
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr ""
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr ""
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr ""
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr ""
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr ""
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr ""
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr ""
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr ""
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,13 +7168,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr ""
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7464,7 +7650,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr ""
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr ""
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr ""
@@ -9106,35 +9316,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr ""
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr ""
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr ""
diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po
index 713d52d267..9c93c0018d 100644
--- a/InvenTree/locale/nl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/nl/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:47\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@@ -34,52 +34,52 @@ msgstr "Geen overeenkomende actie gevonden"
msgid "Enter date"
msgstr "Voer datum in"
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr "Bevestigen"
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
-msgstr "Bevestigen verwijdering"
+msgstr "Bevestig verwijdering"
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr "Bevestig item verwijdering"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr "Voer wachtwoord in"
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr "Voer een nieuw wachtwoord in"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr "Wachtwoord bevestigen"
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr "Nieuw wachtwoord bevestigen"
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr "Categorie selecteren"
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr "E-mailadres (opnieuw)"
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr "E-mailadres bevestiging"
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
-msgstr "U moet elke keer hetzelfde e-mailadres invoeren."
+msgstr "Er moet hetzelfde e-mailadres ingevoerd worden."
#: InvenTree/helpers.py:430
#, python-brace-format
@@ -123,7 +123,7 @@ msgstr "Ontbrekend bestand"
msgid "Missing external link"
msgstr "Externe link ontbreekt"
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr "Bijlage"
@@ -136,12 +136,12 @@ msgstr "Bestand als bijlage selecteren"
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr "Link"
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr "Link naar externe URL"
@@ -153,10 +153,10 @@ msgstr "Opmerking"
msgid "File comment"
msgstr "Bijlage opmerking"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr "Gebruiker"
@@ -202,8 +202,8 @@ msgstr "Ongeldige keuze"
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr "Naam"
@@ -212,23 +212,23 @@ msgstr "Naam"
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr "Omschrijving"
@@ -248,83 +248,83 @@ msgstr "Moet een geldig nummer zijn"
msgid "Filename"
msgstr "Bestandsnaam"
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr "Duits"
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr "Grieks"
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr "Engels"
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr "Spaans"
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr "Spaans (Mexicaans)"
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr "Frans"
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr "Hebreeuws"
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr "Italiaans"
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr "Japans"
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr "Koreaans"
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr "Nederlands"
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr "Noors"
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr "Pools"
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr "Portugees"
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr "Russisch"
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr "Zweeds"
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr "Thais"
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr "Turks"
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr "Vietnamees"
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr "Chinees"
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr "Inventree gezondsheidscheck faalt"
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr "Bezig"
@@ -349,14 +349,14 @@ msgstr "Bezig"
msgid "Placed"
msgstr "Geplaatst"
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr "Voltooid"
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr "Geannuleerd"
@@ -370,7 +370,7 @@ msgstr "Kwijt"
msgid "Returned"
msgstr "Retour"
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr "Verzonden"
@@ -395,83 +395,87 @@ msgstr "Verwoest"
msgid "Rejected"
msgstr "Afgewezen"
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr "Verouderde trackingscode"
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr "Voorraaditem gemaakt"
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr "Bewerken voorraaditem"
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr "Serienummer toegewezen"
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr "Voorraad geteld"
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr "Voorraad handmatig toegevoegd"
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr "Voorraad handmatig verwijderd"
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr "Locatie veranderd"
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr "Gemonteerd"
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr "Gedemonteerd"
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr "Gemonteerd item"
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr "Gedemonteerd item"
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr "Splits van bovenliggend item"
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr "Splits onderliggende item"
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr "Naar klant verzonden"
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr "Geretourneerd door klant"
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
-msgstr "Montageopdracht gecreëerd"
+msgstr "Product aangemaakt"
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
-msgstr "Montageopdracht voltooid"
+msgstr "Product voltooid"
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr "Ontvangen tegen inkoopopdracht"
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr "Productie"
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr "Aantal"
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr "Voer hoeveelheid in voor build-output"
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr "Serienummers"
@@ -654,28 +658,28 @@ msgstr "Ongeldige keuze voor bovenliggende build"
#: report/templates/report/inventree_build_order_base.html:106
#: templates/js/translated/build.js:402
msgid "Build Order"
-msgstr "Bouwopdracht"
+msgstr "Productie-opdracht"
#: build/models.py:138 build/templates/build/build_base.html:13
#: build/templates/build/index.html:8 build/templates/build/index.html:12
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
-msgstr "Bouwopdrachten"
+msgstr "Productie-opdrachten"
#: build/models.py:198
msgid "Build Order Reference"
-msgstr "Bouwopdracht referentie"
+msgstr "Productie-opdracht referentie"
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "Referentie"
@@ -691,11 +695,11 @@ msgstr "Bovenliggende bouw"
#: build/models.py:220
msgid "BuildOrder to which this build is allocated"
-msgstr "BuildOrder waaraan deze build is toegewezen"
+msgstr "Productie-opdracht waar dit product aan is toegewezen"
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr "BuildOrder waaraan deze build is toegewezen"
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr "Onderdeel"
@@ -729,11 +734,11 @@ msgstr "Selecteer onderdeel om te bouwen"
#: build/models.py:238
msgid "Sales Order Reference"
-msgstr "Verkoop Order Referentie"
+msgstr "Verkooporder referentie"
#: build/models.py:242
msgid "SalesOrder to which this build is allocated"
-msgstr "Verkooporder waaraan deze build is toegewezen"
+msgstr "Verkooporder waar dit product aan is toegewezen"
#: build/models.py:247 templates/js/translated/build.js:1352
#: templates/js/translated/order.js:1564
@@ -776,7 +781,7 @@ msgstr "Bouwstatus"
msgid "Build status code"
msgstr "Bouwstatuscode"
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr ""
@@ -791,7 +796,7 @@ msgstr "Aanmaakdatum"
#: build/models.py:296 order/models.py:558
msgid "Target completion date"
-msgstr "Verwachte voltooiingsdatum"
+msgstr "Verwachte opleveringsdatum"
#: build/models.py:297
msgid "Target date for build completion. Build will be overdue after this date."
@@ -800,7 +805,7 @@ msgstr ""
#: build/models.py:300 order/models.py:252
#: templates/js/translated/build.js:1703
msgid "Completion Date"
-msgstr "Voltooiingsdatum"
+msgstr "Opleveringsdatum"
#: build/models.py:306
msgid "completed by"
@@ -812,7 +817,7 @@ msgstr ""
#: build/models.py:315
msgid "User who issued this build order"
-msgstr "Gebruiker die bouwopdracht heeft gegeven"
+msgstr "Gebruiker die de productie-opdracht heeft gegeven"
#: build/models.py:323 build/templates/build/build_base.html:185
#: build/templates/build/detail.html:116 order/models.py:140
@@ -825,32 +830,32 @@ msgstr "Verantwoordelijke"
#: build/models.py:324
msgid "User responsible for this build order"
-msgstr "Gebruiker verantwoordelijk voor deze bouwopdracht"
+msgstr "Gebruiker verantwoordelijk voor deze productie-opdracht"
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr "Externe Link"
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr "Opmerkingen"
@@ -868,7 +873,7 @@ msgstr "Bouwuitvoer is al voltooid"
#: build/models.py:716
msgid "Build output does not match Build Order"
-msgstr "Bouwuitvoer komt niet overeen met bouwopdracht"
+msgstr "Product komt niet overeen met de productie-opdracht"
#: build/models.py:1108
msgid "Build item must specify a build output, as master part is marked as trackable"
@@ -883,7 +888,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -891,51 +896,52 @@ msgstr ""
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr "Product"
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr "Bouw om onderdelen toe te wijzen"
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr "Voorraadartikel"
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr "Bron voorraadartikel"
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr "Voorraad hoeveelheid te alloceren aan bouw"
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr "Installeren in"
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr "Bestemming voorraadartikel"
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr "Locatie"
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr "Status"
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr ""
@@ -1067,35 +1073,35 @@ msgstr "Verwijder bouw"
msgid "Complete Build"
msgstr "Voltooi Build"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
-msgstr "Deze bouwopdracht is toegewezen aan verkooporder %(link)s"
+msgstr "Deze productie-opdracht is toegewezen aan verkooporder %(link)s"
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
-msgstr "Deze bouwopdracht is een onderdeel van bouwopdracht %(link)s"
-
-#: build/templates/build/build_base.html:105
-msgid "Build Order is ready to mark as completed"
-msgstr "Bouwopdracht is gereed om te markeren als voltooid"
+msgstr "Deze productie-opdracht is een onderdeel van productie-opdracht %(link)s"
#: build/templates/build/build_base.html:110
-msgid "Build Order cannot be completed as outstanding outputs remain"
-msgstr "Bouwopdracht kan niet worden voltooid omdat openstaande outputs blijven"
+msgid "Build Order is ready to mark as completed"
+msgstr "Productie-opdracht is gereed om te markeren als voltooid"
#: build/templates/build/build_base.html:115
+msgid "Build Order cannot be completed as outstanding outputs remain"
+msgstr "Productie-opdracht kan niet worden voltooid omdat er nog producties openstaan"
+
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr "Vereiste bouwhoeveelheid is nog niet bereikt"
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
-msgstr "Voorraad is niet volledig toegewezen aan deze bouwopdracht"
+msgstr "Voorraad is niet volledig toegewezen aan deze productie-opdracht"
#: build/templates/build/build_base.html:146
#: build/templates/build/detail.html:132
@@ -1131,15 +1137,15 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
-msgstr "Verkoop Order"
+msgstr "Verkooporder"
#: build/templates/build/build_base.html:178
#: build/templates/build/detail.html:109
@@ -1153,7 +1159,7 @@ msgstr "Onvolledige bouwuitvoer"
#: build/templates/build/build_base.html:224
msgid "Build Order cannot be completed as incomplete build outputs remain"
-msgstr "Bouwopdracht kan niet worden voltooid omdat onvolledige bouwuitvoer blijft bestaan"
+msgstr "Productie-opdracht kan niet worden voltooid omdat er onvoltooide producten openstaan"
#: build/templates/build/build_output_create.html:7
msgid "The Bill of Materials contains trackable parts"
@@ -1181,11 +1187,11 @@ msgstr "Weet je zeker dat je de bouw wilt annuleren?"
#: build/templates/build/complete.html:8
msgid "Build Order is complete"
-msgstr "Bouwopdracht is voltooid"
+msgstr "Productie-opdracht is voltooid"
#: build/templates/build/complete.html:12
msgid "Build Order is incomplete"
-msgstr "Bouwopdracht is onvolledig"
+msgstr "Productie-opdracht is onvolledig"
#: build/templates/build/complete.html:15
msgid "Incompleted build outputs remain"
@@ -1211,7 +1217,7 @@ msgstr "Voorraadbron"
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1253,7 +1259,7 @@ msgstr ""
#: build/templates/build/detail.html:173
msgid "Allocate Stock to Build"
-msgstr ""
+msgstr "Voorraad toewijzen aan Product"
#: build/templates/build/detail.html:177 templates/js/translated/build.js:1207
msgid "Unallocate stock"
@@ -1265,7 +1271,7 @@ msgstr "Niet toegewezen voorraad"
#: build/templates/build/detail.html:180
msgid "Allocate stock to build"
-msgstr ""
+msgstr "Voorraad toewijzen aan product"
#: build/templates/build/detail.html:181 build/templates/build/sidebar.html:8
msgid "Allocate Stock"
@@ -1278,9 +1284,9 @@ msgstr ""
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
-msgstr "Bestel onderdelen"
+msgstr "Onderdelen bestellen"
#: build/templates/build/detail.html:197
msgid "Untracked stock has been fully allocated for this Build Order"
@@ -1347,7 +1353,7 @@ msgstr "Bouw notities"
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr "Notities Bewerken"
@@ -1474,11 +1480,11 @@ msgstr ""
#: common/forms.py:34
msgid "File"
-msgstr ""
+msgstr "Bestand"
#: common/forms.py:35
msgid "Select file to upload"
-msgstr ""
+msgstr "Selecteer bestand om te uploaden"
#: common/forms.py:50
msgid "{name.title()} File"
@@ -1487,9 +1493,9 @@ msgstr ""
#: common/forms.py:51
#, python-brace-format
msgid "Select {name} file to upload"
-msgstr ""
+msgstr "Kies {name} bestand om te uploaden"
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig"
@@ -1503,7 +1509,7 @@ msgstr "Moet een geheel getal zijn"
#: common/models.py:382
msgid "Chosen value is not a valid option"
-msgstr ""
+msgstr "Gekozen waarde is geen geldige optie"
#: common/models.py:405
msgid "Value must be a boolean value"
@@ -1651,7 +1657,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr ""
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr ""
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr ""
@@ -2347,8 +2361,8 @@ msgstr ""
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr ""
@@ -2359,7 +2373,7 @@ msgstr ""
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr "Omschrijving onderdeel fabrikant"
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr "Fabrikant onderdeel"
@@ -2403,8 +2417,8 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr ""
@@ -2431,7 +2445,7 @@ msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderd
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr ""
@@ -2506,7 +2520,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr ""
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr ""
@@ -2571,7 +2585,7 @@ msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr ""
@@ -2590,14 +2604,14 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr ""
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr ""
@@ -2611,7 +2625,7 @@ msgstr ""
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr "Fabrikant onderdelen"
@@ -2633,8 +2647,8 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr "Fabrikanten"
@@ -2706,7 +2720,7 @@ msgstr "Fabrikanten"
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr ""
@@ -2728,7 +2742,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
@@ -2742,7 +2756,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr ""
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr ""
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr ""
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr ""
@@ -2843,7 +2857,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -2912,7 +2926,7 @@ msgstr ""
msgid "New Manufacturer"
msgstr "Nieuwe fabrikant"
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr ""
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr ""
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr ""
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr ""
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr ""
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr ""
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr ""
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr ""
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr ""
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr ""
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr ""
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3530,7 +3544,7 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr ""
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr ""
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr "Standaard locatie"
@@ -3822,99 +3836,43 @@ msgstr "Standaard locatie"
msgid "Available Stock"
msgstr ""
-#: part/forms.py:63
-msgid "File Format"
-msgstr ""
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr "Voeg fabrikantgegevens toe"
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr "Voeg fabrikantgegevens toe aan geëxporteerde BOM"
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr ""
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr ""
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr "Selecteer bovenliggend onderdeel om stuklijst van te kopiëren"
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr ""
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr ""
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -4001,7 +3959,7 @@ msgstr ""
msgid "Part description"
msgstr ""
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
@@ -4014,7 +3972,7 @@ msgstr ""
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr ""
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr ""
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr ""
@@ -4162,7 +4120,7 @@ msgstr ""
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr ""
@@ -4171,7 +4129,7 @@ msgstr ""
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr ""
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr ""
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr ""
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr ""
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr ""
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr ""
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr ""
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr ""
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr ""
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr ""
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr ""
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr ""
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr ""
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr ""
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr ""
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr "Toewijzingen verkoopopdracht"
@@ -4619,7 +4577,7 @@ msgstr ""
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4657,7 +4615,7 @@ msgstr ""
#: part/templates/part/detail.html:319
msgid "Build Order Allocations"
-msgstr "Toewijzingen bouwopdracht"
+msgstr "Productie-opdracht toewijzingen"
#: part/templates/part/detail.html:329
msgid "Part Suppliers"
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr ""
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "QR-code weergeven"
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr "Label afdrukken"
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr "Voorraad acties"
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr ""
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr "Serienummer"
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr ""
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr ""
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr ""
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr ""
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "Voorraadlocatie"
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr "Scan naar locatie"
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr "Voorraad tellen"
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr "Voorraad overzetten"
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr "Geen Locatie ingesteld"
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr "Geen fabrikant geselecteerd"
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr "Locatie acties"
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr "Bewerk locatie"
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr "Verwijder locatie"
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr "Maak nieuwe voorraadlocatie"
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr "Nieuwe locatie"
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr "U staat niet in de lijst van eigenaars van deze locatie. Deze voorraadlocatie kan niet worden bewerkt."
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr "Sublocaties"
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr "Voorraadlocaties"
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr "Afdrukacties"
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr "Labels afdrukken"
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr "Maak nieuwe voorraadlocatie"
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr ""
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,22 +7168,22 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
-msgstr ""
+msgstr "Beschikbaar"
#: templates/email/build_order_required_stock.html:38
#: templates/email/low_stock_notification.html:31
msgid "You are receiving this email because you are subscribed to notifications for this part "
-msgstr ""
+msgstr "Je ontvangt deze e-mail omdat je bent geabonneerd op notificaties van dit onderdeel "
#: templates/email/email.html:35
msgid "InvenTree version"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr ""
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr "Voeg fabrikantgegevens toe"
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr "Voeg fabrikantgegevens toe aan geëxporteerde BOM"
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7423,7 +7609,7 @@ msgstr ""
#: templates/js/translated/build.js:429 templates/js/translated/order.js:1848
msgid "Location not specified"
-msgstr ""
+msgstr "Locatie is niet opgegeven"
#: templates/js/translated/build.js:608
msgid "No active build outputs found"
@@ -7432,12 +7618,12 @@ msgstr ""
#: templates/js/translated/build.js:1057 templates/js/translated/build.js:1766
#: templates/js/translated/order.js:1982
msgid "Edit stock allocation"
-msgstr ""
+msgstr "Voorraadtoewijzing bewerken"
#: templates/js/translated/build.js:1059 templates/js/translated/build.js:1767
#: templates/js/translated/order.js:1983
msgid "Delete stock allocation"
-msgstr ""
+msgstr "Voorraadtoewijzing verwijderen"
#: templates/js/translated/build.js:1077
msgid "Edit Allocation"
@@ -7458,19 +7644,19 @@ msgstr ""
#: templates/js/translated/build.js:1139 templates/js/translated/build.js:1365
#: templates/js/translated/build.js:1762 templates/js/translated/order.js:2227
msgid "Allocated"
-msgstr ""
+msgstr "Toegewezen"
#: templates/js/translated/build.js:1195 templates/js/translated/order.js:2307
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
#: templates/js/translated/build.js:1202 templates/js/translated/order.js:2300
msgid "Allocate stock"
-msgstr ""
+msgstr "Voorraad toewijzen"
#: templates/js/translated/build.js:1267 templates/js/translated/order.js:1499
msgid "Specify stock allocation quantity"
@@ -7479,15 +7665,15 @@ msgstr ""
#: templates/js/translated/build.js:1338 templates/js/translated/label.js:134
#: templates/js/translated/order.js:1550 templates/js/translated/report.js:225
msgid "Select Parts"
-msgstr ""
+msgstr "Onderdelen selecteren"
#: templates/js/translated/build.js:1339 templates/js/translated/order.js:1551
msgid "You must select at least one part to allocate"
-msgstr ""
+msgstr "Er moet op zijn minst één onderdeel toegewezen worden"
#: templates/js/translated/build.js:1353 templates/js/translated/order.js:1565
msgid "Select source location (leave blank to take from all locations)"
-msgstr ""
+msgstr "Selecteer bron locatie (laat het veld leeg om iedere locatie te gebruiken)"
#: templates/js/translated/build.js:1382 templates/js/translated/order.js:1600
msgid "Confirm stock allocation"
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr ""
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr ""
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr "Geen voorraadlocatie ingesteld"
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr ""
@@ -9106,35 +9316,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr ""
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr ""
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr ""
diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po
index 4201822661..b327f4a617 100644
--- a/InvenTree/locale/no/LC_MESSAGES/django.po
+++ b/InvenTree/locale/no/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:47\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Language: no_NO\n"
@@ -34,50 +34,50 @@ msgstr "Ingen samsvarende handling funnet"
msgid "Enter date"
msgstr "Oppgi dato"
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr "Bekreft"
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr "Bekreft sletting"
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr ""
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr "Oppgi passord"
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr "Oppgi nytt passord"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr "Bekreft passord"
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr "Bekreft nytt passord"
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr "Velg kategori"
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr ""
@@ -123,7 +123,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr "Vedlegg"
@@ -136,12 +136,12 @@ msgstr "Velg fil å legge ved"
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr ""
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr ""
@@ -153,10 +153,10 @@ msgstr "Kommenter"
msgid "File comment"
msgstr "Kommentar til fil"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr "Bruker"
@@ -202,8 +202,8 @@ msgstr "Ugyldig valg"
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr "Navn"
@@ -212,23 +212,23 @@ msgstr "Navn"
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr "Beskrivelse"
@@ -248,83 +248,83 @@ msgstr "Nummer må være gyldig"
msgid "Filename"
msgstr ""
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr "Tysk"
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr "Gresk"
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr "Engelsk"
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr "Spansk"
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr "Fransk"
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr "Hebraisk"
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr "Italiensk"
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr "Japansk"
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr "Koreansk"
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr "Nederlandsk"
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr "Norsk"
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr "Polsk"
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr "Russisk"
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr "Svensk"
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr "Thailandsk"
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr "Tyrkisk"
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr "Vietnamesisk"
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr "Kinesisk"
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr ""
@@ -349,14 +349,14 @@ msgstr ""
msgid "Placed"
msgstr ""
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr ""
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr ""
@@ -370,7 +370,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr ""
@@ -395,83 +395,87 @@ msgstr ""
msgid "Rejected"
msgstr ""
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr ""
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr ""
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr ""
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr ""
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr ""
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr ""
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr ""
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr ""
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr ""
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr ""
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr ""
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr ""
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr ""
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr ""
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr ""
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr ""
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr ""
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr ""
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr ""
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr ""
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr ""
@@ -661,7 +665,7 @@ msgstr ""
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr ""
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -695,7 +699,7 @@ msgstr ""
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr ""
@@ -776,7 +781,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr ""
@@ -830,27 +835,27 @@ msgstr ""
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr ""
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr ""
@@ -883,7 +888,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -891,51 +896,52 @@ msgstr ""
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr ""
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr ""
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr ""
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr ""
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr ""
@@ -1067,33 +1073,33 @@ msgstr ""
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr ""
@@ -1211,7 +1217,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr ""
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr ""
@@ -1347,7 +1353,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr ""
@@ -1489,7 +1495,7 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -1651,7 +1657,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr ""
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr ""
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr ""
@@ -2347,8 +2361,8 @@ msgstr ""
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr ""
@@ -2359,7 +2373,7 @@ msgstr ""
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr ""
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr ""
@@ -2403,8 +2417,8 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr ""
@@ -2431,7 +2445,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr ""
@@ -2506,7 +2520,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr ""
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr ""
@@ -2571,7 +2585,7 @@ msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr ""
@@ -2590,14 +2604,14 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr ""
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr ""
@@ -2611,7 +2625,7 @@ msgstr ""
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr ""
@@ -2633,8 +2647,8 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr ""
@@ -2706,7 +2720,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr ""
@@ -2728,7 +2742,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
@@ -2742,7 +2756,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr ""
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr ""
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr ""
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr ""
@@ -2843,7 +2857,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -2912,7 +2926,7 @@ msgstr ""
msgid "New Manufacturer"
msgstr ""
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr ""
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr ""
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr ""
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr ""
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr ""
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr ""
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr ""
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr ""
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr ""
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr ""
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr ""
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3530,7 +3544,7 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr ""
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr ""
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3822,99 +3836,43 @@ msgstr ""
msgid "Available Stock"
msgstr ""
-#: part/forms.py:63
-msgid "File Format"
-msgstr ""
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr ""
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr ""
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr ""
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr ""
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -4001,7 +3959,7 @@ msgstr ""
msgid "Part description"
msgstr ""
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
@@ -4014,7 +3972,7 @@ msgstr ""
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr ""
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr ""
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr ""
@@ -4162,7 +4120,7 @@ msgstr ""
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr ""
@@ -4171,7 +4129,7 @@ msgstr ""
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr ""
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr ""
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr ""
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr ""
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr ""
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr ""
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr ""
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr ""
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr ""
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr ""
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr ""
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr ""
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr ""
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr ""
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr ""
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr ""
@@ -4619,7 +4577,7 @@ msgstr ""
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr ""
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr ""
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr ""
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr ""
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr ""
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr ""
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr ""
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr ""
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr ""
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr ""
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr ""
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr ""
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr ""
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr ""
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,13 +7168,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr ""
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7464,7 +7650,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr ""
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr ""
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr ""
@@ -9106,35 +9316,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr ""
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr ""
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr ""
diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po
index 22b38b1665..2b467b4de9 100644
--- a/InvenTree/locale/pl/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pl/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:47\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
@@ -34,50 +34,50 @@ msgstr "Nie znaleziono pasującej akcji"
msgid "Enter date"
msgstr "Wprowadź dane"
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr "Potwierdź"
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr "Potwierdź usunięcie"
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr "Potwierdź usuwanie elementu"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr "Wprowadź hasło"
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr "Wprowadź nowe hasło"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr "Potwierdź hasło"
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr "Potwierdź nowe hasło"
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr "Wybierz kategorię"
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr "Potwierdzenie adresu email"
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr ""
@@ -123,7 +123,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr "Załącznik"
@@ -136,12 +136,12 @@ msgstr "Wybierz plik do załączenia"
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr "Łącze"
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr "Link do zewnętrznego adresu URL"
@@ -153,10 +153,10 @@ msgstr "Komentarz"
msgid "File comment"
msgstr "Komentarz pliku"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr "Użytkownik"
@@ -202,8 +202,8 @@ msgstr "Błędny wybór"
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr "Nazwa"
@@ -212,23 +212,23 @@ msgstr "Nazwa"
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr "Opis"
@@ -248,83 +248,83 @@ msgstr "Numer musi być prawidłowy"
msgid "Filename"
msgstr "Nazwa pliku"
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr "Niemiecki"
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr "Grecki"
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr "Angielski"
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr "Hiszpański"
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr "Hiszpański (Meksyk)"
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr "Francuski"
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr "Hebrajski"
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr "Włoski"
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr "Japoński"
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr "Koreański"
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr "Holenderski"
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr "Norweski"
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr "Polski"
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr "Portugalski"
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr "Rosyjski"
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr "Szwedzki"
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr "Tajski"
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr "Turecki"
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr "Wietnamski"
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr "Chiński"
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr "W toku"
@@ -349,14 +349,14 @@ msgstr "W toku"
msgid "Placed"
msgstr "Umieszczony"
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr "Zakończono"
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr "Anulowano"
@@ -370,7 +370,7 @@ msgstr "Zagubiono"
msgid "Returned"
msgstr "Zwrócone"
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr "Wysłane"
@@ -395,83 +395,87 @@ msgstr "Zniszczone"
msgid "Rejected"
msgstr "Odrzucone"
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr ""
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr "Utworzono element magazynowy"
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr ""
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr "Przypisano numer seryjny"
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr "Zapas policzony"
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr "Zapas dodany ręcznie"
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr "Zapas usunięty ręcznie"
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr "Lokalizacja zmieniona"
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr ""
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr ""
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr ""
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr ""
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr ""
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr "Podziel element podrzędny"
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr "Wyślij do klienta"
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr "Zwrócony od klienta"
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr ""
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr ""
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr ""
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr "Produkcja"
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr "Ilość"
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr "Numer seryjny"
@@ -661,7 +665,7 @@ msgstr "Zlecenie Budowy"
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr "Zlecenia budowy"
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr "Odwołanie do zamówienia wykonania"
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "Referencja"
@@ -695,7 +699,7 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana"
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana"
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr "Część"
@@ -776,7 +781,7 @@ msgstr "Status budowania"
msgid "Build status code"
msgstr "Kod statusu budowania"
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr "Kod partii"
@@ -830,27 +835,27 @@ msgstr "Użytkownik odpowiedzialny za to zamówienie budowy"
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr "Link Zewnętrzny"
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr "Uwagi"
@@ -883,7 +888,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr "Alokowana ilość musi być większa niż zero"
@@ -891,51 +896,52 @@ msgstr "Alokowana ilość musi być większa niż zero"
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr "Budowa"
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr "Element magazynowy"
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr "Lokalizacja magazynowania przedmiotu"
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr "Zainstaluj do"
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr "Docelowa lokalizacja magazynowa przedmiotu"
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr "Lokalizacja"
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr "Status"
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr "Ilość musi być większa niż zero"
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr ""
@@ -1067,33 +1073,33 @@ msgstr ""
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr "Zakończone"
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr "Zamówienie zakupu"
@@ -1211,7 +1217,7 @@ msgstr "Źródło magazynu"
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr "Przeznaczenie"
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr "Zamów wymagane komponenty"
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr "Zamów części"
@@ -1347,7 +1353,7 @@ msgstr "Notatki tworzenia"
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr ""
@@ -1489,7 +1495,7 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -1651,7 +1657,7 @@ msgstr "Szablon"
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr ""
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr "Pokaż ilość w formularzach"
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr "Cena"
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr "Numer telefonu kontaktowego"
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr "Adres E-Mail"
@@ -2347,8 +2361,8 @@ msgstr "Waluta"
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr "Część bazowa"
@@ -2359,7 +2373,7 @@ msgstr "Wybierz część"
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr ""
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr "Część producenta"
@@ -2403,8 +2417,8 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr ""
@@ -2431,7 +2445,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr "Opakowanie"
@@ -2506,7 +2520,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr "Firma"
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr "Klient"
@@ -2571,7 +2585,7 @@ msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr "Komponenty dostawcy"
@@ -2590,14 +2604,14 @@ msgstr "Nowy dostawca części"
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr "Opcje"
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr "Zamów części"
@@ -2611,7 +2625,7 @@ msgstr "Usuń części"
msgid "Delete Parts"
msgstr "Usuń części"
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr "Części producenta"
@@ -2633,8 +2647,8 @@ msgstr "Zapasy dostawcy"
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr "Lista dostawców"
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr "Producenci"
@@ -2706,7 +2720,7 @@ msgstr "Producenci"
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr "Zamów część"
@@ -2728,7 +2742,7 @@ msgstr "Część wewnętrzna"
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr "Dostawcy"
@@ -2742,7 +2756,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr "Usuń"
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr "Dodaj parametr"
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr ""
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr ""
@@ -2843,7 +2857,7 @@ msgstr "Informacja cenowa"
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr "Edytuj przedział cenowy"
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr "Stan"
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr "Cennik"
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -2912,7 +2926,7 @@ msgstr "Nowy dostawca"
msgid "New Manufacturer"
msgstr "Now producent"
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr "Klienci"
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr "Data wysyłki"
@@ -3130,7 +3144,7 @@ msgstr "Data wysyłki"
msgid "shipped by"
msgstr "wysłane przez"
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr "Ilość elementów"
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr "Zamówienie"
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr "Zlecenie zakupu"
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr ""
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr "Odebrane"
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr ""
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr "Cena zakupu"
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr "Cena zakupu jednostkowego"
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr "Gdzie kupujący chce przechowywać ten przedmiot?"
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr "Cena sprzedaży"
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr "Jednostkowa cena sprzedaży"
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "Zarezerwowana ilość nie może przekraczać ilości na stanie"
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr "Linia"
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr "Komponent"
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3530,7 +3544,7 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr ""
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr "Akcje"
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr "Domyślna lokalizacja"
@@ -3822,99 +3836,43 @@ msgstr "Domyślna lokalizacja"
msgid "Available Stock"
msgstr "Dostępna ilość"
-#: part/forms.py:63
-msgid "File Format"
-msgstr "Format pliku"
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr "Wybierz format pliku wyjściowego"
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr "Kaskadowe"
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr "Poziomy"
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr ""
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr "Część nadrzędna"
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr "potwierdź"
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr "Wybierz kategorię części"
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr "Domyślne słowa kluczowe"
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr ""
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr "Części"
@@ -4001,7 +3959,7 @@ msgstr "Wariant"
msgid "Part description"
msgstr "Opis części"
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr "Słowa kluczowe"
@@ -4014,7 +3972,7 @@ msgstr ""
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr "Kategoria"
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr "IPN"
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr "Nazwa testu"
@@ -4162,7 +4120,7 @@ msgstr ""
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr "Wymagane"
@@ -4171,7 +4129,7 @@ msgstr "Wymagane"
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr "Suma kontrolna"
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr ""
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr ""
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr ""
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr ""
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr ""
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr "Stwórz nową kategorię komponentów"
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr ""
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr ""
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr ""
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr ""
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr "Eksportuj"
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr "Nowy komponent"
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr "Ustaw kategorię"
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr "Ustaw kategorię"
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr ""
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr "Eksportuj dane"
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr "Parametry części"
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr ""
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr "Zapasy części"
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr ""
@@ -4619,7 +4577,7 @@ msgstr "Zestawienie materiałowe"
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr "Powiązane części"
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr "Dodaj powiązaną część"
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr "Akcje kodów kreskowych"
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "Pokaż Kod QR"
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr "Drukuj etykietę"
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr "Akcje magazynowe"
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr "Ostatni numer seryjny"
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr ""
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr "Edytuj kategorię części"
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr "Numer Seryjny"
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr "Wynik"
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr "Data"
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr ""
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr "Data ważności"
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr ""
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr "Część podstawowa"
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr "Ilość w magazynie"
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr "Ilość musi być liczbą całkowitą"
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr ""
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr "Termin minął"
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr "Ostatnia aktualizacja"
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr "Ostatnia inwentaryzacja"
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr "Lokacje nie są ustawione"
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr "Skaner kodów"
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr "Edytuj lokację"
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr "Nowa lokalizacja"
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr ""
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr ""
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr "Drukuj etykiety"
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr "Utwórz nową lokalizację magazynową"
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr ""
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,13 +7168,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr "Kaskadowe"
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr "Poziomy"
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7464,7 +7650,7 @@ msgstr "Przydzielono"
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr "Cena jednostkowa"
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr ""
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr "Cena jednostkowa"
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr "Dodaj stan"
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr "Dodaj"
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr "Szczegóły"
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr "Dodano"
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr ""
@@ -9106,35 +9316,35 @@ msgstr "Uprawnienia"
msgid "Important dates"
msgstr ""
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr "Uprawnienia nadane"
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr "Uprawnienie do wyświetlania przedmiotów"
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr "Uprawnienie do dodawania przedmiotów"
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr "Uprawnienie do edycji przedmiotów"
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr "Uprawnienie do usuwania przedmiotów"
diff --git a/InvenTree/locale/pt/LC_MESSAGES/django.po b/InvenTree/locale/pt/LC_MESSAGES/django.po
index 5b636802e5..900d7cf186 100644
--- a/InvenTree/locale/pt/LC_MESSAGES/django.po
+++ b/InvenTree/locale/pt/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:47\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Portuguese\n"
"Language: pt_PT\n"
@@ -34,50 +34,50 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr ""
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr ""
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr ""
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr ""
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr ""
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr ""
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr ""
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr ""
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr ""
@@ -123,7 +123,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr ""
@@ -136,12 +136,12 @@ msgstr ""
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr ""
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr ""
@@ -153,10 +153,10 @@ msgstr ""
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr ""
@@ -202,8 +202,8 @@ msgstr ""
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr ""
@@ -212,23 +212,23 @@ msgstr ""
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr ""
@@ -248,83 +248,83 @@ msgstr ""
msgid "Filename"
msgstr ""
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr ""
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr ""
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr ""
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr ""
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr ""
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr ""
@@ -349,14 +349,14 @@ msgstr ""
msgid "Placed"
msgstr ""
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr ""
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr ""
@@ -370,7 +370,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr ""
@@ -395,83 +395,87 @@ msgstr ""
msgid "Rejected"
msgstr ""
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr ""
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr ""
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr ""
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr ""
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr ""
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr ""
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr ""
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr ""
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr ""
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr ""
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr ""
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr ""
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr ""
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr ""
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr ""
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr ""
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr ""
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr ""
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr ""
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr ""
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr ""
@@ -661,7 +665,7 @@ msgstr ""
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr ""
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -695,7 +699,7 @@ msgstr ""
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr ""
@@ -776,7 +781,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr ""
@@ -830,27 +835,27 @@ msgstr ""
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr ""
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr ""
@@ -883,7 +888,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -891,51 +896,52 @@ msgstr ""
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr ""
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr ""
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr ""
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr ""
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr ""
@@ -1067,33 +1073,33 @@ msgstr ""
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr ""
@@ -1211,7 +1217,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr ""
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr ""
@@ -1347,7 +1353,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr ""
@@ -1489,7 +1495,7 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -1651,7 +1657,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr ""
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr ""
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr ""
@@ -2347,8 +2361,8 @@ msgstr ""
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr ""
@@ -2359,7 +2373,7 @@ msgstr ""
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr ""
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr ""
@@ -2403,8 +2417,8 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr ""
@@ -2431,7 +2445,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr ""
@@ -2506,7 +2520,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr ""
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr ""
@@ -2571,7 +2585,7 @@ msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr ""
@@ -2590,14 +2604,14 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr ""
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr ""
@@ -2611,7 +2625,7 @@ msgstr ""
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr ""
@@ -2633,8 +2647,8 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr ""
@@ -2706,7 +2720,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr ""
@@ -2728,7 +2742,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
@@ -2742,7 +2756,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr ""
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr ""
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr ""
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr ""
@@ -2843,7 +2857,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -2912,7 +2926,7 @@ msgstr ""
msgid "New Manufacturer"
msgstr ""
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr ""
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr ""
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr ""
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr ""
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr ""
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr ""
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr ""
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr ""
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr ""
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr ""
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr ""
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3530,7 +3544,7 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr ""
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr ""
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3822,99 +3836,43 @@ msgstr ""
msgid "Available Stock"
msgstr ""
-#: part/forms.py:63
-msgid "File Format"
-msgstr ""
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr ""
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr ""
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr ""
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr ""
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -4001,7 +3959,7 @@ msgstr ""
msgid "Part description"
msgstr ""
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
@@ -4014,7 +3972,7 @@ msgstr ""
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr ""
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr ""
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr ""
@@ -4162,7 +4120,7 @@ msgstr ""
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr ""
@@ -4171,7 +4129,7 @@ msgstr ""
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr ""
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr ""
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr ""
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr ""
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr ""
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr ""
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr ""
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr ""
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr ""
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr ""
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr ""
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr ""
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr ""
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr ""
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr ""
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr ""
@@ -4619,7 +4577,7 @@ msgstr ""
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr ""
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr ""
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr ""
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr ""
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr ""
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr ""
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr ""
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr ""
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr ""
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr ""
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr ""
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr ""
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr ""
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr ""
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,13 +7168,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr ""
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7464,7 +7650,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr ""
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr ""
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr ""
@@ -9106,35 +9316,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr ""
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr ""
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr ""
diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po
index 1882f12d21..34c9d0d725 100644
--- a/InvenTree/locale/ru/LC_MESSAGES/django.po
+++ b/InvenTree/locale/ru/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:47\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@@ -34,50 +34,50 @@ msgstr "Соответствующее действие не найдено"
msgid "Enter date"
msgstr "Введите дату"
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr "Подтвердить"
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr "Подтвердите удаление"
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr "Подтвердите удаление элемента"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr "Введите пароль"
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr "Введите новый пароль"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr "Подтвердить пароль"
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr "Подтвердите новый пароль"
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr "Выбрать категорию"
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr "Email (еще раз)"
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr "Подтверждение адреса электронной почты"
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr "Вы должны вводить один и тот же адрес электронной почты."
@@ -123,7 +123,7 @@ msgstr "Файл не найден"
msgid "Missing external link"
msgstr "Отсутствует внешняя ссылка"
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr "Вложения"
@@ -136,12 +136,12 @@ msgstr "Выберите файл для вложения"
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr "Ссылка"
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr "Ссылка на внешний URL"
@@ -153,10 +153,10 @@ msgstr "Комментарий"
msgid "File comment"
msgstr "Комментарий к файлу"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr "Пользователь"
@@ -202,8 +202,8 @@ msgstr "Неверный выбор"
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr "Название"
@@ -212,23 +212,23 @@ msgstr "Название"
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr "Описание"
@@ -248,83 +248,83 @@ msgstr "Должно быть действительным номером"
msgid "Filename"
msgstr "Имя файла"
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr "Немецкий"
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr "Греческий"
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr "Английский"
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr "Испанский"
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr "Испанский (Мексика)"
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr "Французский"
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr "Иврит"
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr "Итальянский"
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr "Японский"
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr "Корейский"
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr "Голландский"
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr "Норвежский"
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr "Польский"
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr "Португальский"
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr "Русский"
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr "Шведский"
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr "Тайский"
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr "Турецкий"
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr "Вьетнамский"
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr "Китайский"
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr "Ошибка проверки состояния системы InvenTree"
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr "Ожидаемый"
@@ -349,14 +349,14 @@ msgstr "Ожидаемый"
msgid "Placed"
msgstr "Размещены"
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr "Готово"
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr "Отменено"
@@ -370,7 +370,7 @@ msgstr "Потерян"
msgid "Returned"
msgstr "Возвращено"
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr "Доставлено"
@@ -395,83 +395,87 @@ msgstr "Разрушено"
msgid "Rejected"
msgstr "Отклоненный"
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr "Отслеживание устаревших запасов"
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr "Товар создан"
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr "Отредактированный товар"
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr "Присвоенный серийный номер"
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr "Склад подсчитан"
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr "Добавлен вручную"
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr "Удалено вручную"
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr "Расположение изменено"
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr "Укомплектовано"
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr "Удалено из сборки"
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr "Установленный элемент компонента"
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr "Удален элемент компонента"
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr "Отделить от родительского элемента"
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr "Разбить дочерний элемент"
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr "Отправлено клиенту"
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr "Возвращено от клиента"
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr "Создан вывод заказа сборки"
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr "Вывод заказа сборки завершён"
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr "Получено по заказу на покупку"
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr "Продукция"
@@ -565,7 +569,7 @@ msgstr ""
#: barcodes/api.py:199
msgid "Barcode already matches Part"
-msgstr ""
+msgstr "Штрих-код уже совпадает с Компонентом"
#: barcodes/api.py:205 barcodes/api.py:217
msgid "Barcode hash already matches Stock Item"
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr "Количество"
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr "Введите количество для вывода сборки"
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr "Серийные номера"
@@ -661,7 +665,7 @@ msgstr "Порядок сборки"
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr "Порядок сборки"
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr "Ссылка на заказ"
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "Отсылка"
@@ -695,7 +699,7 @@ msgstr ""
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr "Детали"
@@ -776,7 +781,7 @@ msgstr "Статус сборки"
msgid "Build status code"
msgstr "Код статуса сборки"
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr "Штрих код"
@@ -830,27 +835,27 @@ msgstr "Пользователь ответственный за этот зак
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr "Внешняя ссылка"
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr "Заметки"
@@ -883,7 +888,7 @@ msgstr "Выделенное количество ({q}) не должно пре
msgid "Stock item is over-allocated"
msgstr "Предмет на складе перераспределен"
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr "Выделенное количество должно быть больше нуля"
@@ -891,51 +896,52 @@ msgstr "Выделенное количество должно быть боль
msgid "Quantity must be 1 for serialized stock"
msgstr "Количество должно быть 1 для сериализованных запасов"
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr "Выбранный предмет со складом не найден в BOM"
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr "Сборка"
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr "Предметы на складе"
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr "Исходный складской предмет"
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr "Расположение"
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr "Статус"
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr ""
@@ -1067,33 +1073,33 @@ msgstr ""
msgid "Complete Build"
msgstr "Завершить сборку"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
@@ -1128,18 +1134,18 @@ msgstr "Просрочено"
#: templates/js/translated/build.js:1647
#: templates/js/translated/table_filters.js:370
msgid "Completed"
-msgstr ""
+msgstr "Завершённые"
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
-msgstr ""
+msgstr "Заказ покупателя"
#: build/templates/build/build_base.html:178
#: build/templates/build/detail.html:109
@@ -1211,7 +1217,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr ""
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr "Заказать детали"
@@ -1347,7 +1353,7 @@ msgstr "Заметки сборки"
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr ""
@@ -1489,7 +1495,7 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -1651,7 +1657,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr ""
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr ""
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr ""
@@ -2347,8 +2361,8 @@ msgstr ""
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr ""
@@ -2359,7 +2373,7 @@ msgstr ""
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr ""
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr ""
@@ -2403,8 +2417,8 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr ""
@@ -2431,7 +2445,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr ""
@@ -2506,7 +2520,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr ""
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr ""
@@ -2571,7 +2585,7 @@ msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr ""
@@ -2590,14 +2604,14 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr ""
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr ""
@@ -2611,7 +2625,7 @@ msgstr ""
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr ""
@@ -2633,8 +2647,8 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr ""
@@ -2706,7 +2720,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr ""
@@ -2728,7 +2742,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
@@ -2742,7 +2756,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr ""
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr ""
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr ""
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr ""
@@ -2843,7 +2857,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -2912,7 +2926,7 @@ msgstr ""
msgid "New Manufacturer"
msgstr ""
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr ""
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr ""
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr ""
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr ""
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr ""
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr ""
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr ""
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr ""
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr ""
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr ""
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr ""
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3530,7 +3544,7 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr ""
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr ""
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3822,99 +3836,43 @@ msgstr ""
msgid "Available Stock"
msgstr ""
-#: part/forms.py:63
-msgid "File Format"
-msgstr ""
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr ""
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr ""
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr ""
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr ""
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -4001,7 +3959,7 @@ msgstr ""
msgid "Part description"
msgstr ""
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
@@ -4014,7 +3972,7 @@ msgstr ""
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr ""
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr ""
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr ""
@@ -4162,7 +4120,7 @@ msgstr ""
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr ""
@@ -4171,7 +4129,7 @@ msgstr ""
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr ""
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr ""
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr ""
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr ""
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr ""
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr ""
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr ""
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr ""
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr ""
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr ""
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr ""
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr ""
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr ""
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr ""
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr ""
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr ""
@@ -4619,7 +4577,7 @@ msgstr ""
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr ""
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr ""
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr ""
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr ""
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr ""
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr ""
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr ""
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr ""
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr ""
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr ""
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr ""
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr ""
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr ""
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr ""
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,13 +7168,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr ""
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7464,7 +7650,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr ""
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr ""
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr ""
@@ -9106,35 +9316,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr ""
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr ""
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr ""
diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po
index f30c4284d8..8f0b0f1fbd 100644
--- a/InvenTree/locale/sv/LC_MESSAGES/django.po
+++ b/InvenTree/locale/sv/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:47\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@@ -34,50 +34,50 @@ msgstr "Ingen matchande åtgärd hittades"
msgid "Enter date"
msgstr "Ange datum"
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr "Bekräfta"
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr "Bekräfta borttagning"
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr "Bekräfta borttagning av artikel"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr "Ange lösenord"
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr "Ange nytt lösenord"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr "Bekräfta lösenord"
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr "Bekräfta nytt lösenord"
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr "Välj Kategori"
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr ""
@@ -123,7 +123,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr "Bilaga"
@@ -136,12 +136,12 @@ msgstr "Välj fil att bifoga"
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr ""
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr ""
@@ -153,10 +153,10 @@ msgstr "Kommentar"
msgid "File comment"
msgstr "Fil kommentar"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr "Användare"
@@ -202,8 +202,8 @@ msgstr "Ogiltigt val"
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr "Namn"
@@ -212,23 +212,23 @@ msgstr "Namn"
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr "Beskrivning"
@@ -248,83 +248,83 @@ msgstr "Måste vara ett giltigt nummer"
msgid "Filename"
msgstr "Filnamn"
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr "Tyska"
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr "Grekiska"
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr "Engelska"
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr "Spanska"
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr "Franska"
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr "Hebreiska"
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr "Italienska"
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr "Japanska"
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr "Koreanska"
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr "Nederländska"
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr "Norska"
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr "Polska"
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr "Ryska"
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr "Svenska"
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr "Thailändska"
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr "Turkiska"
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr "Vietnamesiska"
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr "Kinesiska"
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr "InvenTree systemhälsokontroll misslyckades"
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr "Väntar"
@@ -349,14 +349,14 @@ msgstr "Väntar"
msgid "Placed"
msgstr "Placerad"
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr "Slutför"
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr "Avbruten"
@@ -370,7 +370,7 @@ msgstr "Förlorad"
msgid "Returned"
msgstr "Återlämnad"
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr "Skickad"
@@ -395,83 +395,87 @@ msgstr "Förstörd"
msgid "Rejected"
msgstr "Avvisad"
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr ""
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr ""
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr ""
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr ""
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr ""
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr ""
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr ""
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr ""
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr ""
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr ""
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr ""
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr ""
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr ""
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr ""
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr ""
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr ""
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr ""
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr ""
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr ""
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr ""
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr ""
@@ -661,7 +665,7 @@ msgstr ""
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr ""
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -695,7 +699,7 @@ msgstr ""
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr ""
@@ -776,7 +781,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr ""
@@ -830,27 +835,27 @@ msgstr ""
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr ""
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr ""
@@ -883,7 +888,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -891,51 +896,52 @@ msgstr ""
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr ""
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr ""
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr ""
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr ""
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr ""
@@ -1067,33 +1073,33 @@ msgstr ""
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr ""
@@ -1211,7 +1217,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr ""
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr ""
@@ -1347,7 +1353,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr ""
@@ -1489,7 +1495,7 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -1651,7 +1657,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr ""
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr ""
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr ""
@@ -2347,8 +2361,8 @@ msgstr ""
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr ""
@@ -2359,7 +2373,7 @@ msgstr ""
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr ""
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr ""
@@ -2403,8 +2417,8 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr ""
@@ -2431,7 +2445,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr ""
@@ -2506,7 +2520,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr ""
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr ""
@@ -2571,7 +2585,7 @@ msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr ""
@@ -2590,14 +2604,14 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr ""
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr ""
@@ -2611,7 +2625,7 @@ msgstr ""
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr ""
@@ -2633,8 +2647,8 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr ""
@@ -2706,7 +2720,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr ""
@@ -2728,7 +2742,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
@@ -2742,7 +2756,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr ""
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr ""
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr ""
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr ""
@@ -2843,7 +2857,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -2912,7 +2926,7 @@ msgstr ""
msgid "New Manufacturer"
msgstr ""
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr ""
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr ""
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr ""
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr ""
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr ""
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr ""
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr ""
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr ""
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr ""
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr ""
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr ""
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3530,7 +3544,7 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr ""
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr ""
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3822,99 +3836,43 @@ msgstr ""
msgid "Available Stock"
msgstr ""
-#: part/forms.py:63
-msgid "File Format"
-msgstr ""
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr ""
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr ""
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr ""
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr ""
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -4001,7 +3959,7 @@ msgstr ""
msgid "Part description"
msgstr ""
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
@@ -4014,7 +3972,7 @@ msgstr ""
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr ""
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr ""
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr ""
@@ -4162,7 +4120,7 @@ msgstr ""
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr ""
@@ -4171,7 +4129,7 @@ msgstr ""
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr ""
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr ""
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr ""
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr ""
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr ""
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr ""
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr ""
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr ""
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr ""
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr ""
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr ""
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr ""
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr ""
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr ""
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr ""
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr ""
@@ -4619,7 +4577,7 @@ msgstr ""
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr ""
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr ""
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr ""
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr ""
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr ""
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr ""
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr ""
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr ""
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr ""
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr ""
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr ""
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr ""
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr ""
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr ""
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,13 +7168,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr ""
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7464,7 +7650,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr ""
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr ""
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr ""
@@ -9106,35 +9316,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr ""
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr ""
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr ""
diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po
index 33d8b3334a..862aeeae7a 100644
--- a/InvenTree/locale/th/LC_MESSAGES/django.po
+++ b/InvenTree/locale/th/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:47\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Thai\n"
"Language: th_TH\n"
@@ -34,50 +34,50 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr ""
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr ""
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr ""
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr ""
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr ""
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr ""
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr ""
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr ""
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr ""
@@ -123,7 +123,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr ""
@@ -136,12 +136,12 @@ msgstr ""
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr ""
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr ""
@@ -153,10 +153,10 @@ msgstr ""
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr ""
@@ -202,8 +202,8 @@ msgstr ""
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr ""
@@ -212,23 +212,23 @@ msgstr ""
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr ""
@@ -248,83 +248,83 @@ msgstr ""
msgid "Filename"
msgstr ""
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr ""
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr ""
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr ""
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr ""
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr ""
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr ""
@@ -349,14 +349,14 @@ msgstr ""
msgid "Placed"
msgstr ""
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr ""
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr ""
@@ -370,7 +370,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr ""
@@ -395,83 +395,87 @@ msgstr ""
msgid "Rejected"
msgstr ""
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr ""
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr ""
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr ""
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr ""
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr ""
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr ""
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr ""
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr ""
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr ""
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr ""
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr ""
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr ""
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr ""
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr ""
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr ""
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr ""
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr ""
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr ""
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr ""
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr ""
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr ""
@@ -661,7 +665,7 @@ msgstr ""
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr ""
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -695,7 +699,7 @@ msgstr ""
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr ""
@@ -776,7 +781,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr ""
@@ -830,27 +835,27 @@ msgstr ""
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr ""
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr ""
@@ -883,7 +888,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -891,51 +896,52 @@ msgstr ""
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr ""
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr ""
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr ""
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr ""
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr ""
@@ -1067,33 +1073,33 @@ msgstr ""
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr ""
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr ""
@@ -1211,7 +1217,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr ""
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr ""
@@ -1347,7 +1353,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr ""
@@ -1489,7 +1495,7 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -1651,7 +1657,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr ""
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr ""
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr ""
@@ -2347,8 +2361,8 @@ msgstr ""
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr ""
@@ -2359,7 +2373,7 @@ msgstr ""
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr ""
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr ""
@@ -2403,8 +2417,8 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr ""
@@ -2431,7 +2445,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr ""
@@ -2506,7 +2520,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr ""
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr ""
@@ -2571,7 +2585,7 @@ msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr ""
@@ -2590,14 +2604,14 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr ""
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr ""
@@ -2611,7 +2625,7 @@ msgstr ""
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr ""
@@ -2633,8 +2647,8 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr ""
@@ -2706,7 +2720,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr ""
@@ -2728,7 +2742,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
@@ -2742,7 +2756,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr ""
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr ""
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr ""
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr ""
@@ -2843,7 +2857,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr ""
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -2912,7 +2926,7 @@ msgstr ""
msgid "New Manufacturer"
msgstr ""
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr ""
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr ""
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr ""
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr ""
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr ""
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr ""
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr ""
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr ""
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr ""
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr ""
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr ""
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3530,7 +3544,7 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr ""
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr ""
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3822,99 +3836,43 @@ msgstr ""
msgid "Available Stock"
msgstr ""
-#: part/forms.py:63
-msgid "File Format"
-msgstr ""
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr ""
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr ""
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr ""
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr ""
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr ""
@@ -4001,7 +3959,7 @@ msgstr ""
msgid "Part description"
msgstr ""
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
@@ -4014,7 +3972,7 @@ msgstr ""
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr ""
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr ""
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr ""
@@ -4162,7 +4120,7 @@ msgstr ""
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr ""
@@ -4171,7 +4129,7 @@ msgstr ""
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr ""
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr ""
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr ""
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr ""
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr ""
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr ""
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr ""
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr ""
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr ""
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr ""
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr ""
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr ""
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr ""
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr ""
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr ""
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr ""
@@ -4619,7 +4577,7 @@ msgstr ""
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr ""
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr ""
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr ""
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr ""
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr ""
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr ""
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr ""
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr ""
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr ""
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr ""
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr ""
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr ""
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr ""
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr ""
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr ""
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,13 +7168,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr ""
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7464,7 +7650,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr ""
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr ""
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr ""
@@ -9106,35 +9316,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr ""
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr ""
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr ""
diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po
index 032934132c..23999feeb4 100644
--- a/InvenTree/locale/tr/LC_MESSAGES/django.po
+++ b/InvenTree/locale/tr/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:47\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Language: tr_TR\n"
@@ -34,50 +34,50 @@ msgstr "Eşleşen eylem bulunamadı"
msgid "Enter date"
msgstr "Tarih giriniz"
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr "Onay"
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr "Silmeyi Onayla"
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr "Silmeyi onayla"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr "Şifrenizi girin"
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr "Lütfen Yeni Parolayı Girin"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr "Parolayı doğrulayın"
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr "Yeni parolayı doğrulayın"
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr "Kategori Seçin"
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr ""
@@ -123,7 +123,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr "Ek"
@@ -136,12 +136,12 @@ msgstr "Eklenecek dosyayı seç"
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr "Bağlantı"
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr "Harici URL'ye bağlantı"
@@ -153,10 +153,10 @@ msgstr "Yorum"
msgid "File comment"
msgstr "Dosya yorumu"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr "Kullanıcı"
@@ -202,8 +202,8 @@ msgstr "Geçersiz seçim"
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr "Adı"
@@ -212,23 +212,23 @@ msgstr "Adı"
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr "Açıklama"
@@ -248,83 +248,83 @@ msgstr "Geçerli bir numara olmalı"
msgid "Filename"
msgstr ""
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr "Almanca"
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr "Yunanca"
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr "İngilizce"
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr "İspanyolca"
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr "Fransızca"
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr "İbranice"
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr "İtalyanca"
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr "Japonca"
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr "Korece"
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr "Flemenkçe"
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr "Norveççe"
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr "Polonyaca"
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr "Rusça"
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr "İsveççe"
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr "Tay dili"
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr "Türkçe"
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr "Çince"
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr "InvenTree sistem sağlık kontrolü başarısız"
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr "Bekliyor"
@@ -349,14 +349,14 @@ msgstr "Bekliyor"
msgid "Placed"
msgstr "Sipariş verildi"
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr "Tamamlandı"
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr "İptal edildi"
@@ -370,7 +370,7 @@ msgstr "Kayıp"
msgid "Returned"
msgstr "İade"
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr "Sevk edildi"
@@ -395,83 +395,87 @@ msgstr "Kullanılamaz durumda"
msgid "Rejected"
msgstr "Reddedildi"
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr "Eski stok izleme girişi"
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr "Stok kalemi oluşturuldu"
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr "Düzenlenen stok kalemi"
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr "Atanan seri numarası"
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr "Stok sayıldı"
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr "Stok manuel olarak eklendi"
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr "Stok manuel olarak çıkarıldı"
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr "Konum değişti"
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr "Montajda kullanıldı"
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr "Montajdan çıkarıldı"
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr "Bileşen ögesinde kullanıldı"
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr "Bileşen ögesinden çıkarıldı"
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr "Üst ögeden ayır"
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr "Alt ögeyi ayır"
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr "Müşteriye gönderildi"
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr "Müşteriden geri döndü"
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr "Yapım emri çıktısı oluşturuldu"
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr "Yapım emri çıktısı tamamlandı"
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr "Satın alma emri karşılığında alındı"
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr "Üretim"
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr "Miktar"
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr "Yapım işi çıktısı için miktarını girin"
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr "Seri Numaraları"
@@ -661,7 +665,7 @@ msgstr "Yapım İşi Emri"
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr "Yapım İşi Emirleri"
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr "Yapım İşi Emri Referansı"
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "Referans"
@@ -695,7 +699,7 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri"
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri"
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr "Parça"
@@ -776,7 +781,7 @@ msgstr "Yapım İşi Durumu"
msgid "Build status code"
msgstr "Yapım işi durum kodu"
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr "Sıra numarası"
@@ -830,27 +835,27 @@ msgstr "Bu yapım işi emrinden sorumlu kullanıcı"
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr "Harici Bağlantı"
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr "Notlar"
@@ -883,7 +888,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr "Stok kalemi fazladan tahsis edilmiş"
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır"
@@ -891,51 +896,52 @@ msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır"
msgid "Quantity must be 1 for serialized stock"
msgstr "Seri numaralı stok için miktar bir olmalı"
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr "Yapım İşi"
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr "Yapım işi için tahsis edilen parçalar"
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr "Stok Kalemi"
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr "Kaynak stok kalemi"
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr "Yapım işi için tahsis edilen stok miktarı"
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr "Kurulduğu yer"
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr "Hedef stok kalemi"
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr "Konum"
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr "Durum"
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr ""
@@ -1067,33 +1073,33 @@ msgstr ""
msgid "Complete Build"
msgstr "Tamamlanmış Yapım İşi"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr "Bu yapım işi emri, %(link)s sipariş emrine tahsis edilmiştir"
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr "Bu yapım işi emri, %(link)s yapım iş emrinin altıdır"
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr "Yapım işi tamamlandı olarak işaretlenmeye hazır"
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr "Bekleyen çıktılar kaldığı için yapım işi emri tamamlanamıyor"
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr "Gerekli yapım işi miktarı henüz tamamlanmadı"
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr "Stok, yapım işi emri için tamamen tahsis edilemedi"
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr "Tamamlandı"
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr "Sipariş Emri"
@@ -1211,7 +1217,7 @@ msgstr "Stok Kaynağı"
msgid "Stock can be taken from any available location."
msgstr "Stok herhangi bir konumdan alınabilir."
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr "Hedef"
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr "Gerekli parçaları sipariş edin"
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr "Parça Siparişi"
@@ -1347,7 +1353,7 @@ msgstr "Yapım İşi Notları"
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr "Notları Düzenle"
@@ -1489,7 +1495,7 @@ msgstr "{name.title()} Dosya"
msgid "Select {name} file to upload"
msgstr "{name} dosyasını yüklemek için seçin"
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -1651,7 +1657,7 @@ msgstr "Şablon"
msgid "Parts are templates by default"
msgstr "Parçaları varsayılan olan şablondur"
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr ""
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr ""
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr ""
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr "Formlarda Miktarı Göster"
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr "Fiyat"
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr "İletişim telefon numarası"
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr "E-posta"
@@ -2347,8 +2361,8 @@ msgstr "Para birimi"
msgid "Default currency used for this company"
msgstr "Bu şirket için varsayılan para birimi"
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr "Temel Parça"
@@ -2359,7 +2373,7 @@ msgstr "Parça seçin"
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr ""
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr ""
@@ -2403,8 +2417,8 @@ msgstr "Parametre adı"
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr "Değer"
@@ -2431,7 +2445,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr "Paketleme"
@@ -2506,7 +2520,7 @@ msgstr "Para Birimi Kodu"
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr ""
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr "Müşteri"
@@ -2571,7 +2585,7 @@ msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr "Tedarikçi Parçaları"
@@ -2590,14 +2604,14 @@ msgstr "Yeni Tedarikçi Parçası"
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr ""
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr ""
@@ -2611,7 +2625,7 @@ msgstr "Parçaları sil"
msgid "Delete Parts"
msgstr "Parçaları Sil"
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr ""
@@ -2633,8 +2647,8 @@ msgstr "Tedarikçi Stoku"
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr "Yeni Satın Alma Emri"
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr "Üreticiler"
@@ -2706,7 +2720,7 @@ msgstr "Üreticiler"
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr "Parça siparişi"
@@ -2728,7 +2742,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
@@ -2742,7 +2756,7 @@ msgstr "Tedarikçi parçalarını sil"
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr ""
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr ""
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr "Tedarikçi Parçası"
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr "Tedarikçi Parça Stoku"
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr "Tedarikçi Parçası Emirleri"
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr ""
@@ -2843,7 +2857,7 @@ msgstr "Fiyat Bilgisi"
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr "Stok"
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr "Fiyatlandırma"
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr "Stok Kalemleri"
@@ -2912,7 +2926,7 @@ msgstr "Yeni Tedarikçi"
msgid "New Manufacturer"
msgstr "Yeni Üretici"
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr "Müşteriler"
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr ""
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr ""
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr ""
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr ""
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr ""
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr ""
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr ""
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr ""
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "Tahsis miktarı stok miktarını aşamaz"
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr "Stok kalemi fazladan tahsis edilmiş"
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr "Seri numaralı stok kalemi için miktar bir olmalı"
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr ""
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr ""
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr "Stok tahsis miktarını girin"
@@ -3530,7 +3544,7 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr ""
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr "İşlemler"
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr "Varsayılan Konum"
@@ -3822,99 +3836,43 @@ msgstr "Varsayılan Konum"
msgid "Available Stock"
msgstr ""
-#: part/forms.py:63
-msgid "File Format"
-msgstr "Dosya Biçimi"
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr "Çıktı dosyası biçimi seçin"
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr "Seviyeler"
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr "Dışa aktarılan malzeme listesine parça tedarikçisi verilerini dahil edin"
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr ""
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr ""
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr "Parametre şablonunu aynı seviyedeki kategorilere ekle"
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr "Parametre şablonunu tüm kategorilere ekle"
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr "Parça Kategorileri"
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr "Parçalar"
@@ -4001,7 +3959,7 @@ msgstr "Çeşidi"
msgid "Part description"
msgstr "Parça açıklaması"
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr "Anahtar kelimeler"
@@ -4014,7 +3972,7 @@ msgstr ""
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr ""
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr "DPN"
@@ -4145,8 +4103,8 @@ msgstr "Test şablonları sadece takip edilebilir paçalar için oluşturulabili
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr "Test Adı"
@@ -4162,7 +4120,7 @@ msgstr "Test Açıklaması"
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr "Gerekli"
@@ -4171,7 +4129,7 @@ msgstr "Gerekli"
msgid "Is this test required to pass?"
msgstr "Testi geçmesi için bu gerekli mi?"
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr "Bu malzeme listesi, çeşit parçalar listesini kalıtsalıdır"
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr "Çeşide İzin Ver"
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr ""
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr ""
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr ""
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr ""
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr ""
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr ""
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr ""
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr "Alt kategoriler"
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr "Parçalar (Alt kategoriler dahil)"
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr ""
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr "Kategori ayarla"
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr "Kategori Ayarla"
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr ""
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr ""
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr "Parça Stoku"
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr "Parça Test Şablonları"
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr "Test Şablonu Ekle"
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr ""
@@ -4619,7 +4577,7 @@ msgstr ""
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr "Barkod işlemleri"
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr "Etiket Yazdır"
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr "Stok işlemleri"
@@ -4848,7 +4806,7 @@ msgstr "Bu parça %(link)s parçasının bir çeşididir"
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr "Satış Emirleri için Gerekli"
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr "Son Seri Numarası"
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr "Toplam Maliyet"
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr "Aşağıdaki parçalara kategori ayarla"
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr "Stok Yok"
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr "Parça Parametre Şablonu Oluştur"
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr "Parça Parametre Şablonu Düzenle"
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr "Parça Parametre Şablonu Sil"
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr "Kategori Parametre Şablonu Oluştur"
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr "Kategori Parametre Şablonu Düzenle"
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr "Kategori Parametre Şablonu Sil"
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr "Seri Numara"
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr ""
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr "Seri No"
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr ""
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr "Kurulu stok kalemlerinin kaldırılmasını onayla"
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr ""
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr "Üst Stok Kalemi"
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr "Bu stok kalemi için tedarikçi parçası seçin"
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "Stok Konumu"
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr "Bu öge için seri numarası"
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr "Seri numaraları tam sayı listesi olmalı"
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr "Miktar seri numaları ile eşleşmiyor"
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr "Seri numaraları zaten mevcut: {exists}"
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Stok kalemi stokta olmadığı için taşınamaz"
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr "Konuma Tara"
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr "Yazdırma işlemleri"
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr "Stok ayarlama işlemleri"
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr "Stoku seri numarala"
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr "Çeşide çevir"
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr "Bu stok kaleminin süresi %(item.expiry_date)s tarihinde sona erdi"
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr "Bu stok kaleminin süresi %(item.expiry_date)s tarihinde sona erecek"
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr "Stok kalemi tüm gerekli testleri geçmedi"
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr "Bu stok kalemi seri numaları - Benzersiz bir seri numarasına sahip ve miktarı ayarlanamaz."
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr "Konum ayarlanmadı"
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr "Bu stok kalemi için seri numaralandırılmış ögeler oluştur."
msgid "Select quantity to serialize, and unique serial numbers."
msgstr "Seri numaralandırılacak miktarı ve benzersiz seri numaralarını seçin."
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr "Konum işlemleri"
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr "Konumu düzenle"
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr "Konumu sil"
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr "Yeni stok konumu oluştur"
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr "Yeni Konum"
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr "Bu konumun sahipleri listesinde değilsiniz. Bu stok konumu düzenlenemez."
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr "Alt konumlar"
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr "Stok Konumları"
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr "Yazdırma İşlemleri"
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr "Etiketleri yazdır"
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr "Stok ayarlamasını onayla"
@@ -6186,7 +6201,7 @@ msgstr "Stok ayarlamasını onayla"
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr "Yeni Stok konumu oluştur"
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr "Tema Ayarları"
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr "Tema Seç"
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr "Dil Ayarları"
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr "Dili Ayarla"
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr "InvenTree Sürüm Bilgisi"
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,13 +7168,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr "Konuma Kaydet"
msgid "Barcode does not match a valid location"
msgstr "Barkod geçerli bir konumla eşleşmiyor"
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr "Seviyeler"
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr "Dışa aktarılan malzeme listesine parça tedarikçisi verilerini dahil edin"
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr "Gerekli Parça"
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7464,7 +7650,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr ""
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr ""
msgid "No variants found"
msgstr "Çeşit bulunamadı"
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr "Sorgu ile eşleşen test şablonu bulunamadı"
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr "Stok konumu ayarlanmadı"
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr "konumlar"
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr "Tanımsız konum"
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr "Detaylar"
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr "Konum artık yok"
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr ""
@@ -9106,35 +9316,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr ""
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr ""
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr ""
diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po
index 1f893cff2e..372bddf936 100644
--- a/InvenTree/locale/vi/LC_MESSAGES/django.po
+++ b/InvenTree/locale/vi/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:47\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"Language: vi_VN\n"
@@ -34,50 +34,50 @@ msgstr ""
msgid "Enter date"
msgstr ""
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr ""
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr ""
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr ""
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr ""
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr ""
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr "Xác nhận mật khẩu"
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr "Xác nhận mật khẩu mới"
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr "Chọn danh mục"
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr ""
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr ""
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr ""
@@ -123,7 +123,7 @@ msgstr ""
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr ""
@@ -136,12 +136,12 @@ msgstr ""
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr ""
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr ""
@@ -153,10 +153,10 @@ msgstr "Bình luận"
msgid "File comment"
msgstr ""
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr "Người dùng"
@@ -202,8 +202,8 @@ msgstr ""
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr ""
@@ -212,23 +212,23 @@ msgstr ""
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr "Mô tả"
@@ -248,83 +248,83 @@ msgstr ""
msgid "Filename"
msgstr "Tên tập tin"
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr ""
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr ""
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr ""
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr ""
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr ""
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr ""
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr ""
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr ""
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr ""
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr ""
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr ""
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr ""
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr ""
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr ""
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr ""
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr ""
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr ""
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr ""
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr ""
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr ""
@@ -349,14 +349,14 @@ msgstr ""
msgid "Placed"
msgstr ""
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr ""
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr ""
@@ -370,7 +370,7 @@ msgstr ""
msgid "Returned"
msgstr ""
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr ""
@@ -395,83 +395,87 @@ msgstr ""
msgid "Rejected"
msgstr ""
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr ""
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr ""
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr ""
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr ""
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr ""
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr ""
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr ""
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr ""
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr ""
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr ""
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr ""
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr ""
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr ""
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr ""
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr ""
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr ""
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr ""
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr ""
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr ""
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr ""
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr ""
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr ""
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr ""
@@ -661,7 +665,7 @@ msgstr "Tạo đơn hàng"
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr "Tạo đơn hàng"
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr ""
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr ""
@@ -695,7 +699,7 @@ msgstr ""
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr ""
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr "Nguyên liệu"
@@ -776,7 +781,7 @@ msgstr ""
msgid "Build status code"
msgstr ""
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr ""
@@ -830,27 +835,27 @@ msgstr ""
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr ""
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr ""
@@ -883,7 +888,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr ""
@@ -891,51 +896,52 @@ msgstr ""
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr ""
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr ""
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr ""
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr ""
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr ""
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr "Trạng thái"
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr ""
@@ -1067,33 +1073,33 @@ msgstr ""
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr "Đã hoàn thành"
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr ""
@@ -1211,7 +1217,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr ""
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr ""
@@ -1347,7 +1353,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr ""
@@ -1489,7 +1495,7 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -1651,7 +1657,7 @@ msgstr ""
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr "Hiển thị nguyên liệu mới nhất"
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr "Hiển thị nguyên liệu mới nhất trên trang chủ"
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr ""
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr ""
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr ""
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr ""
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr ""
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr ""
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr ""
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr ""
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr ""
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr ""
@@ -2347,8 +2361,8 @@ msgstr ""
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr ""
@@ -2359,7 +2373,7 @@ msgstr ""
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr ""
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr ""
@@ -2403,8 +2417,8 @@ msgstr ""
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr ""
@@ -2431,7 +2445,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr ""
@@ -2506,7 +2520,7 @@ msgstr ""
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr ""
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr ""
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr ""
@@ -2571,7 +2585,7 @@ msgstr ""
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr ""
@@ -2590,14 +2604,14 @@ msgstr ""
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr ""
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr ""
@@ -2611,7 +2625,7 @@ msgstr ""
msgid "Delete Parts"
msgstr ""
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr ""
@@ -2633,8 +2647,8 @@ msgstr ""
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr ""
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr ""
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr ""
@@ -2706,7 +2720,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr ""
@@ -2728,7 +2742,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr ""
@@ -2742,7 +2756,7 @@ msgstr ""
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr ""
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr ""
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr ""
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr ""
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr ""
@@ -2843,7 +2857,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr "Kiện hàng"
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr ""
@@ -2912,7 +2926,7 @@ msgstr ""
msgid "New Manufacturer"
msgstr ""
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr ""
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr ""
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr ""
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr ""
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr "Đơn hàng"
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr ""
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr ""
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr ""
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr "Giá mua"
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr ""
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr ""
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr ""
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3530,7 +3544,7 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr ""
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr ""
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr ""
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr ""
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr ""
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr ""
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr ""
@@ -3822,99 +3836,43 @@ msgstr ""
msgid "Available Stock"
msgstr ""
-#: part/forms.py:63
-msgid "File Format"
-msgstr ""
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr ""
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr ""
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr ""
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr ""
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr ""
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr ""
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr ""
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr ""
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr "Nguyên liệu"
@@ -4001,7 +3959,7 @@ msgstr ""
msgid "Part description"
msgstr ""
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr ""
@@ -4014,7 +3972,7 @@ msgstr ""
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr ""
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr ""
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr ""
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr ""
@@ -4162,7 +4120,7 @@ msgstr ""
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr ""
@@ -4171,7 +4129,7 @@ msgstr ""
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr ""
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr ""
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr ""
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr ""
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr ""
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr ""
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr ""
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr ""
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr ""
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr ""
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr ""
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr ""
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr ""
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr ""
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr ""
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr ""
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr ""
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr ""
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr ""
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr ""
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr ""
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr ""
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr ""
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr ""
@@ -4619,7 +4577,7 @@ msgstr ""
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr ""
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr ""
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr ""
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr "Số seri mới nhất"
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr ""
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr ""
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr ""
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr ""
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr ""
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr ""
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr ""
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr ""
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr ""
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr ""
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr ""
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr ""
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr ""
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr ""
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr ""
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr ""
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr ""
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "Kho hàng"
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr ""
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr ""
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr ""
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr ""
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr ""
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr ""
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr "Thiết lập giao diện"
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr "Thiết lập ngôn ngữ"
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr ""
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr ""
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr ""
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "and hidden."
-msgstr ""
-
+#: templates/InvenTree/settings/user.html:285
#: templates/InvenTree/settings/user_display.html:95
msgid "Show them too"
msgstr ""
+#: templates/InvenTree/settings/user.html:292
#: templates/InvenTree/settings/user_display.html:101
msgid "Help the translation efforts!"
msgstr ""
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "and hidden."
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,13 +7168,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr ""
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr ""
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7464,7 +7650,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr ""
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr ""
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr ""
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr ""
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr ""
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr "Số seri mới nhất"
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr ""
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr ""
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr ""
@@ -9106,35 +9316,35 @@ msgstr ""
msgid "Important dates"
msgstr ""
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr ""
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr ""
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr ""
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr ""
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr ""
diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po
index 08a330c36f..a3b8d4255c 100644
--- a/InvenTree/locale/zh/LC_MESSAGES/django.po
+++ b/InvenTree/locale/zh/LC_MESSAGES/django.po
@@ -3,8 +3,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-12-08 23:43+0000\n"
-"PO-Revision-Date: 2021-12-08 23:47\n"
+"POT-Creation-Date: 2021-12-21 02:57+0000\n"
+"PO-Revision-Date: 2021-12-21 03:01\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -34,50 +34,50 @@ msgstr "未找到指定操作"
msgid "Enter date"
msgstr "输入日期"
-#: InvenTree/forms.py:120 build/forms.py:48 build/forms.py:69 build/forms.py:93
+#: InvenTree/forms.py:126 build/forms.py:48 build/forms.py:69 build/forms.py:93
#: order/forms.py:24 order/forms.py:35 order/forms.py:46 order/forms.py:57
-#: part/forms.py:108 templates/account/email_confirm.html:20
+#: part/forms.py:78 templates/account/email_confirm.html:20
#: templates/js/translated/forms.js:595
msgid "Confirm"
msgstr "确认"
-#: InvenTree/forms.py:136
+#: InvenTree/forms.py:142
msgid "Confirm delete"
msgstr "确认删除"
-#: InvenTree/forms.py:137
+#: InvenTree/forms.py:143
msgid "Confirm item deletion"
msgstr "确认删除"
-#: InvenTree/forms.py:168
+#: InvenTree/forms.py:174
msgid "Enter password"
msgstr "输入密码"
-#: InvenTree/forms.py:169
+#: InvenTree/forms.py:175
msgid "Enter new password"
msgstr "输入新密码"
-#: InvenTree/forms.py:176
+#: InvenTree/forms.py:182
msgid "Confirm password"
msgstr "确认密码"
-#: InvenTree/forms.py:177
+#: InvenTree/forms.py:183
msgid "Confirm new password"
msgstr "确认新密码"
-#: InvenTree/forms.py:209
+#: InvenTree/forms.py:215
msgid "Select Category"
msgstr "选择分类"
-#: InvenTree/forms.py:230
+#: InvenTree/forms.py:236
msgid "Email (again)"
msgstr "Email (再次)"
-#: InvenTree/forms.py:234
+#: InvenTree/forms.py:240
msgid "Email address confirmation"
msgstr "Email 地址确认"
-#: InvenTree/forms.py:254
+#: InvenTree/forms.py:260
msgid "You must type the same email each time."
msgstr "您必须输入相同的 Email 。"
@@ -123,7 +123,7 @@ msgstr "缺少文件"
msgid "Missing external link"
msgstr ""
-#: InvenTree/models.py:132 stock/models.py:1852
+#: InvenTree/models.py:132 stock/models.py:1967
#: templates/js/translated/attachment.js:117
msgid "Attachment"
msgstr "附件"
@@ -136,12 +136,12 @@ msgstr "选择附件"
#: company/models.py:564 order/models.py:124 part/models.py:797
#: report/templates/report/inventree_build_order_base.html:165
#: templates/js/translated/company.js:537
-#: templates/js/translated/company.js:826 templates/js/translated/part.js:1258
+#: templates/js/translated/company.js:826 templates/js/translated/part.js:1260
msgid "Link"
msgstr "链接"
#: InvenTree/models.py:140 build/models.py:330 part/models.py:798
-#: stock/models.py:524
+#: stock/models.py:527
msgid "Link to external URL"
msgstr "链接到外部 URL"
@@ -153,10 +153,10 @@ msgstr "注释"
msgid "File comment"
msgstr "文件注释"
-#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1213
-#: common/models.py:1214 part/models.py:2205 part/models.py:2225
+#: InvenTree/models.py:149 InvenTree/models.py:150 common/models.py:1219
+#: common/models.py:1220 part/models.py:2205 part/models.py:2225
#: report/templates/report/inventree_test_report_base.html:96
-#: templates/js/translated/stock.js:2341
+#: templates/js/translated/stock.js:2534
msgid "User"
msgstr "用户"
@@ -202,8 +202,8 @@ msgstr "选择无效"
#: templates/InvenTree/settings/plugin_settings.html:23
#: templates/InvenTree/settings/settings.html:268
#: templates/js/translated/company.js:638 templates/js/translated/part.js:506
-#: templates/js/translated/part.js:643 templates/js/translated/part.js:1565
-#: templates/js/translated/stock.js:2134
+#: templates/js/translated/part.js:643 templates/js/translated/part.js:1567
+#: templates/js/translated/stock.js:2327
msgid "Name"
msgstr "名称"
@@ -212,23 +212,23 @@ msgstr "名称"
#: company/models.py:570 company/templates/company/company_base.html:68
#: company/templates/company/manufacturer_part.html:76
#: company/templates/company/supplier_part.html:73 label/models.py:119
-#: order/models.py:122 part/models.py:764 part/templates/part/category.html:70
+#: order/models.py:122 part/models.py:764 part/templates/part/category.html:74
#: part/templates/part/part_base.html:163
#: part/templates/part/set_category.html:14 report/models.py:194
#: report/models.py:553 report/models.py:592
#: report/templates/report/inventree_build_order_base.html:118
-#: stock/templates/stock/location.html:89
+#: stock/templates/stock/location.html:93
#: templates/InvenTree/settings/plugin_settings.html:33
-#: templates/js/translated/bom.js:215 templates/js/translated/bom.js:428
+#: templates/js/translated/bom.js:327 templates/js/translated/bom.js:540
#: templates/js/translated/build.js:1627 templates/js/translated/company.js:345
#: templates/js/translated/company.js:548
#: templates/js/translated/company.js:837 templates/js/translated/order.js:836
#: templates/js/translated/order.js:1019 templates/js/translated/order.js:1258
-#: templates/js/translated/part.js:565 templates/js/translated/part.js:933
-#: templates/js/translated/part.js:1018 templates/js/translated/part.js:1188
-#: templates/js/translated/part.js:1584 templates/js/translated/part.js:1653
-#: templates/js/translated/stock.js:1390 templates/js/translated/stock.js:2146
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/part.js:565 templates/js/translated/part.js:935
+#: templates/js/translated/part.js:1020 templates/js/translated/part.js:1190
+#: templates/js/translated/part.js:1586 templates/js/translated/part.js:1655
+#: templates/js/translated/stock.js:1569 templates/js/translated/stock.js:2339
+#: templates/js/translated/stock.js:2384
msgid "Description"
msgstr "描述信息"
@@ -248,83 +248,83 @@ msgstr "必须是有效数字"
msgid "Filename"
msgstr "文件名"
-#: InvenTree/settings.py:689
+#: InvenTree/settings.py:698
msgid "German"
msgstr "德语"
-#: InvenTree/settings.py:690
+#: InvenTree/settings.py:699
msgid "Greek"
msgstr "希腊语"
-#: InvenTree/settings.py:691
+#: InvenTree/settings.py:700
msgid "English"
msgstr "英语"
-#: InvenTree/settings.py:692
+#: InvenTree/settings.py:701
msgid "Spanish"
msgstr "西班牙语"
-#: InvenTree/settings.py:693
+#: InvenTree/settings.py:702
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/settings.py:694
+#: InvenTree/settings.py:703
msgid "French"
msgstr "法语"
-#: InvenTree/settings.py:695
+#: InvenTree/settings.py:704
msgid "Hebrew"
msgstr "希伯来语"
-#: InvenTree/settings.py:696
+#: InvenTree/settings.py:705
msgid "Italian"
msgstr "意大利语"
-#: InvenTree/settings.py:697
+#: InvenTree/settings.py:706
msgid "Japanese"
msgstr "日语"
-#: InvenTree/settings.py:698
+#: InvenTree/settings.py:707
msgid "Korean"
msgstr "韩语"
-#: InvenTree/settings.py:699
+#: InvenTree/settings.py:708
msgid "Dutch"
msgstr "荷兰语"
-#: InvenTree/settings.py:700
+#: InvenTree/settings.py:709
msgid "Norwegian"
msgstr "挪威语"
-#: InvenTree/settings.py:701
+#: InvenTree/settings.py:710
msgid "Polish"
msgstr "波兰语"
-#: InvenTree/settings.py:702
+#: InvenTree/settings.py:711
msgid "Portugese"
msgstr ""
-#: InvenTree/settings.py:703
+#: InvenTree/settings.py:712
msgid "Russian"
msgstr "俄语"
-#: InvenTree/settings.py:704
+#: InvenTree/settings.py:713
msgid "Swedish"
msgstr "瑞典语"
-#: InvenTree/settings.py:705
+#: InvenTree/settings.py:714
msgid "Thai"
msgstr "泰语"
-#: InvenTree/settings.py:706
+#: InvenTree/settings.py:715
msgid "Turkish"
msgstr "土耳其语"
-#: InvenTree/settings.py:707
+#: InvenTree/settings.py:716
msgid "Vietnamese"
msgstr "越南语"
-#: InvenTree/settings.py:708
+#: InvenTree/settings.py:717
msgid "Chinese"
msgstr "中文(简体)"
@@ -341,7 +341,7 @@ msgid "InvenTree system health checks failed"
msgstr "InventTree系统健康检查失败"
#: InvenTree/status_codes.py:101 InvenTree/status_codes.py:142
-#: InvenTree/status_codes.py:311 templates/js/translated/table_filters.js:313
+#: InvenTree/status_codes.py:316 templates/js/translated/table_filters.js:313
msgid "Pending"
msgstr "待定"
@@ -349,14 +349,14 @@ msgstr "待定"
msgid "Placed"
msgstr "已添加"
-#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:314
+#: InvenTree/status_codes.py:103 InvenTree/status_codes.py:319
#: order/templates/order/order_base.html:128
#: order/templates/order/sales_order_base.html:132
msgid "Complete"
msgstr "完成"
#: InvenTree/status_codes.py:104 InvenTree/status_codes.py:144
-#: InvenTree/status_codes.py:313
+#: InvenTree/status_codes.py:318
msgid "Cancelled"
msgstr "已取消"
@@ -370,7 +370,7 @@ msgstr "丢失"
msgid "Returned"
msgstr "已退回"
-#: InvenTree/status_codes.py:143 order/models.py:939
+#: InvenTree/status_codes.py:143 order/models.py:941
#: templates/js/translated/order.js:1980 templates/js/translated/order.js:2255
msgid "Shipped"
msgstr "已发货"
@@ -395,83 +395,87 @@ msgstr "已销毁"
msgid "Rejected"
msgstr "Rejected"
-#: InvenTree/status_codes.py:269
+#: InvenTree/status_codes.py:272
msgid "Legacy stock tracking entry"
msgstr "旧库存跟踪条目"
-#: InvenTree/status_codes.py:271
+#: InvenTree/status_codes.py:274
msgid "Stock item created"
msgstr "库存项已创建"
-#: InvenTree/status_codes.py:273
+#: InvenTree/status_codes.py:276
msgid "Edited stock item"
msgstr "已编辑库存项"
-#: InvenTree/status_codes.py:274
+#: InvenTree/status_codes.py:277
msgid "Assigned serial number"
msgstr "已分配序列号"
-#: InvenTree/status_codes.py:276
+#: InvenTree/status_codes.py:279
msgid "Stock counted"
msgstr "库存计数"
-#: InvenTree/status_codes.py:277
+#: InvenTree/status_codes.py:280
msgid "Stock manually added"
msgstr "已手动添加库存"
-#: InvenTree/status_codes.py:278
+#: InvenTree/status_codes.py:281
msgid "Stock manually removed"
msgstr "库存手动删除"
-#: InvenTree/status_codes.py:280
+#: InvenTree/status_codes.py:283
msgid "Location changed"
msgstr "仓储地点已更改"
-#: InvenTree/status_codes.py:282
+#: InvenTree/status_codes.py:285
msgid "Installed into assembly"
msgstr "安装到组装中"
-#: InvenTree/status_codes.py:283
+#: InvenTree/status_codes.py:286
msgid "Removed from assembly"
msgstr "已从组装中删除"
-#: InvenTree/status_codes.py:285
+#: InvenTree/status_codes.py:288
msgid "Installed component item"
msgstr "已安装组件项"
-#: InvenTree/status_codes.py:286
+#: InvenTree/status_codes.py:289
msgid "Removed component item"
msgstr "已删除组件项"
-#: InvenTree/status_codes.py:288
+#: InvenTree/status_codes.py:291
msgid "Split from parent item"
msgstr "从父项拆分"
-#: InvenTree/status_codes.py:289
+#: InvenTree/status_codes.py:292
msgid "Split child item"
msgstr "拆分子项"
-#: InvenTree/status_codes.py:291 templates/js/translated/table_filters.js:213
+#: InvenTree/status_codes.py:294 templates/js/translated/stock.js:2064
+msgid "Merged stock items"
+msgstr ""
+
+#: InvenTree/status_codes.py:296 templates/js/translated/table_filters.js:213
msgid "Sent to customer"
msgstr "发送给客户"
-#: InvenTree/status_codes.py:292
+#: InvenTree/status_codes.py:297
msgid "Returned from customer"
msgstr "从客户退货"
-#: InvenTree/status_codes.py:294
+#: InvenTree/status_codes.py:299
msgid "Build order output created"
msgstr "已创建生产订单输出"
-#: InvenTree/status_codes.py:295
+#: InvenTree/status_codes.py:300
msgid "Build order output completed"
msgstr "生产订单输出已完成"
-#: InvenTree/status_codes.py:297
+#: InvenTree/status_codes.py:302
msgid "Received against purchase order"
msgstr "收到定购单"
-#: InvenTree/status_codes.py:312
+#: InvenTree/status_codes.py:317
msgid "Production"
msgstr "生产中"
@@ -575,16 +579,16 @@ msgstr ""
msgid "Barcode associated with Stock Item"
msgstr ""
-#: build/forms.py:36 build/models.py:1283
-#: build/templates/build/build_base.html:132
-#: build/templates/build/detail.html:35 common/models.py:1253
+#: build/forms.py:36 build/models.py:1286
+#: build/templates/build/build_base.html:82
+#: build/templates/build/detail.html:35 common/models.py:1259
#: company/forms.py:42 company/templates/company/supplier_part.html:251
-#: order/models.py:794 order/models.py:1205 order/serializers.py:810
+#: order/models.py:796 order/models.py:1207 order/serializers.py:810
#: order/templates/order/order_wizard/match_parts.html:30
-#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:223
-#: part/forms.py:239 part/forms.py:255 part/models.py:2576
+#: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:193
+#: part/forms.py:209 part/forms.py:225 part/models.py:2576
#: part/templates/part/bom_upload/match_parts.html:31
-#: part/templates/part/detail.html:967 part/templates/part/detail.html:1053
+#: part/templates/part/detail.html:961 part/templates/part/detail.html:1047
#: part/templates/part/part_pricing.html:16
#: report/templates/report/inventree_build_order_base.html:114
#: report/templates/report/inventree_po_report.html:91
@@ -592,10 +596,10 @@ msgstr ""
#: report/templates/report/inventree_test_report_base.html:81
#: report/templates/report/inventree_test_report_base.html:139
#: stock/forms.py:142 stock/serializers.py:293
-#: stock/templates/stock/item_base.html:174
-#: stock/templates/stock/item_base.html:255
-#: stock/templates/stock/item_base.html:263
-#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:443
+#: stock/templates/stock/item_base.html:180
+#: stock/templates/stock/item_base.html:261
+#: stock/templates/stock/item_base.html:269
+#: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:555
#: templates/js/translated/build.js:240 templates/js/translated/build.js:440
#: templates/js/translated/build.js:634 templates/js/translated/build.js:644
#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1367
@@ -604,10 +608,10 @@ msgstr ""
#: templates/js/translated/order.js:1578 templates/js/translated/order.js:1859
#: templates/js/translated/order.js:1947 templates/js/translated/order.js:2036
#: templates/js/translated/order.js:2150 templates/js/translated/part.js:843
-#: templates/js/translated/part.js:1796 templates/js/translated/part.js:1919
-#: templates/js/translated/part.js:1997 templates/js/translated/stock.js:382
-#: templates/js/translated/stock.js:579 templates/js/translated/stock.js:2326
-#: templates/js/translated/stock.js:2428
+#: templates/js/translated/part.js:1798 templates/js/translated/part.js:1921
+#: templates/js/translated/part.js:1999 templates/js/translated/stock.js:383
+#: templates/js/translated/stock.js:580 templates/js/translated/stock.js:750
+#: templates/js/translated/stock.js:2519 templates/js/translated/stock.js:2621
msgid "Quantity"
msgstr "数量"
@@ -616,8 +620,8 @@ msgid "Enter quantity for build output"
msgstr "输入生产产出数量"
#: build/forms.py:41 order/serializers.py:814 stock/forms.py:81
-#: stock/serializers.py:314 templates/js/translated/stock.js:229
-#: templates/js/translated/stock.js:383
+#: stock/serializers.py:314 templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:384
msgid "Serial Numbers"
msgstr "序列号"
@@ -661,7 +665,7 @@ msgstr "生产订单"
#: order/templates/order/sales_order_detail.html:92
#: order/templates/order/so_sidebar.html:13
#: part/templates/part/part_sidebar.html:20 templates/InvenTree/index.html:221
-#: templates/InvenTree/search.html:145
+#: templates/InvenTree/search.html:139
#: templates/InvenTree/settings/sidebar.html:43 users/models.py:44
msgid "Build Orders"
msgstr "生产订单"
@@ -671,11 +675,11 @@ msgid "Build Order Reference"
msgstr "相关生产订单"
#: build/models.py:199 order/models.py:210 order/models.py:536
-#: order/models.py:801 part/models.py:2585
+#: order/models.py:803 part/models.py:2585
#: part/templates/part/bom_upload/match_parts.html:30
#: report/templates/report/inventree_po_report.html:92
#: report/templates/report/inventree_so_report.html:92
-#: templates/js/translated/bom.js:435 templates/js/translated/build.js:1124
+#: templates/js/translated/bom.js:547 templates/js/translated/build.js:1124
#: templates/js/translated/order.js:1050 templates/js/translated/order.js:2144
msgid "Reference"
msgstr "引用"
@@ -695,7 +699,7 @@ msgstr "此次生产匹配的订单"
#: build/models.py:225 build/templates/build/build_base.html:77
#: build/templates/build/detail.html:30 company/models.py:705
-#: order/models.py:854 order/models.py:928
+#: order/models.py:856 order/models.py:930
#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:357
#: part/models.py:2151 part/models.py:2167 part/models.py:2186
#: part/models.py:2203 part/models.py:2305 part/models.py:2427
@@ -706,20 +710,21 @@ msgstr "此次生产匹配的订单"
#: report/templates/report/inventree_build_order_base.html:110
#: report/templates/report/inventree_po_report.html:90
#: report/templates/report/inventree_so_report.html:90
-#: templates/InvenTree/search.html:86
+#: templates/InvenTree/search.html:80
#: templates/email/build_order_required_stock.html:17
#: templates/email/low_stock_notification.html:16
-#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:214
-#: templates/js/translated/bom.js:393 templates/js/translated/build.js:625
+#: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:326
+#: templates/js/translated/bom.js:505 templates/js/translated/build.js:625
#: templates/js/translated/build.js:993 templates/js/translated/build.js:1364
#: templates/js/translated/build.js:1632 templates/js/translated/company.js:489
#: templates/js/translated/company.js:746 templates/js/translated/order.js:84
#: templates/js/translated/order.js:586 templates/js/translated/order.js:1004
#: templates/js/translated/order.js:1576 templates/js/translated/order.js:1933
-#: templates/js/translated/order.js:2128 templates/js/translated/part.js:918
-#: templates/js/translated/part.js:999 templates/js/translated/part.js:1166
-#: templates/js/translated/stock.js:553 templates/js/translated/stock.js:747
-#: templates/js/translated/stock.js:1347 templates/js/translated/stock.js:2416
+#: templates/js/translated/order.js:2128 templates/js/translated/part.js:920
+#: templates/js/translated/part.js:1001 templates/js/translated/part.js:1168
+#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:719
+#: templates/js/translated/stock.js:926 templates/js/translated/stock.js:1526
+#: templates/js/translated/stock.js:2609
msgid "Part"
msgstr "商品"
@@ -776,7 +781,7 @@ msgstr "生产状态"
msgid "Build status code"
msgstr "生产状态代码"
-#: build/models.py:285 stock/models.py:528
+#: build/models.py:285 stock/models.py:531
msgid "Batch Code"
msgstr "批量代码"
@@ -830,27 +835,27 @@ msgstr "负责此生产订单的用户"
#: build/models.py:329 build/templates/build/detail.html:102
#: company/templates/company/manufacturer_part.html:102
#: company/templates/company/supplier_part.html:126
-#: part/templates/part/part_base.html:354 stock/models.py:522
-#: stock/templates/stock/item_base.html:374
+#: part/templates/part/part_base.html:354 stock/models.py:525
+#: stock/templates/stock/item_base.html:372
msgid "External Link"
msgstr "外部链接"
#: build/models.py:334 build/serializers.py:201
#: build/templates/build/sidebar.html:21 company/models.py:142
#: company/models.py:577 company/templates/company/sidebar.html:25
-#: order/models.py:144 order/models.py:803 order/models.py:1049
+#: order/models.py:144 order/models.py:805 order/models.py:1051
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/so_sidebar.html:17 part/models.py:925
-#: part/templates/part/detail.html:116 part/templates/part/part_sidebar.html:50
+#: part/templates/part/detail.html:120 part/templates/part/part_sidebar.html:50
#: report/templates/report/inventree_build_order_base.html:173
-#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:594
-#: stock/models.py:1752 stock/models.py:1858 stock/serializers.py:332
-#: stock/serializers.py:624 stock/serializers.py:711
+#: stock/forms.py:140 stock/forms.py:190 stock/forms.py:224 stock/models.py:597
+#: stock/models.py:1867 stock/models.py:1973 stock/serializers.py:332
+#: stock/serializers.py:638 stock/serializers.py:736 stock/serializers.py:868
#: stock/templates/stock/stock_sidebar.html:21
-#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:599
+#: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:711
#: templates/js/translated/company.js:842 templates/js/translated/order.js:1149
#: templates/js/translated/order.js:1445 templates/js/translated/order.js:2280
-#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:1616
+#: templates/js/translated/stock.js:1309 templates/js/translated/stock.js:1795
msgid "Notes"
msgstr "备注"
@@ -883,7 +888,7 @@ msgstr ""
msgid "Stock item is over-allocated"
msgstr "库存物品分配过度!"
-#: build/models.py:1133 order/models.py:1165
+#: build/models.py:1133 order/models.py:1167
msgid "Allocation quantity must be greater than zero"
msgstr "分配数量必须大于0"
@@ -891,51 +896,52 @@ msgstr "分配数量必须大于0"
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1193
+#: build/models.py:1196
msgid "Selected stock item not found in BOM"
msgstr ""
-#: build/models.py:1253 stock/templates/stock/item_base.html:346
-#: templates/InvenTree/search.html:143 templates/js/translated/build.js:1605
+#: build/models.py:1256 stock/templates/stock/item_base.html:344
+#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1605
#: templates/navbar.html:35
msgid "Build"
msgstr "生产"
-#: build/models.py:1254
+#: build/models.py:1257
msgid "Build to allocate parts"
msgstr ""
-#: build/models.py:1270 build/serializers.py:328 order/serializers.py:690
-#: order/serializers.py:708 stock/serializers.py:562
+#: build/models.py:1273 build/serializers.py:334 order/serializers.py:690
+#: order/serializers.py:708 stock/serializers.py:576 stock/serializers.py:694
#: stock/templates/stock/item_base.html:8
-#: stock/templates/stock/item_base.html:16
-#: stock/templates/stock/item_base.html:368
+#: stock/templates/stock/item_base.html:22
+#: stock/templates/stock/item_base.html:366
#: templates/js/translated/build.js:413 templates/js/translated/build.js:418
#: templates/js/translated/build.js:1366 templates/js/translated/build.js:1748
#: templates/js/translated/order.js:85 templates/js/translated/order.js:1577
#: templates/js/translated/order.js:1832 templates/js/translated/order.js:1837
#: templates/js/translated/order.js:1940 templates/js/translated/order.js:2030
-#: templates/js/translated/stock.js:554 templates/js/translated/stock.js:2277
+#: templates/js/translated/stock.js:555 templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:2470
msgid "Stock Item"
msgstr "库存项"
-#: build/models.py:1271
+#: build/models.py:1274
msgid "Source stock item"
msgstr "源库存项"
-#: build/models.py:1284
+#: build/models.py:1287
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1292
+#: build/models.py:1295
msgid "Install into"
msgstr "安装到"
-#: build/models.py:1293
+#: build/models.py:1296
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:137 build/serializers.py:357
+#: build/serializers.py:137 build/serializers.py:363
msgid "Build Output"
msgstr ""
@@ -956,16 +962,16 @@ msgid "This build output is not fully allocated"
msgstr ""
#: build/serializers.py:190 order/serializers.py:226 order/serializers.py:294
-#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:813
-#: stock/templates/stock/item_base.html:314
+#: stock/forms.py:222 stock/serializers.py:325 stock/serializers.py:729
+#: stock/serializers.py:970 stock/templates/stock/item_base.html:312
#: templates/js/translated/barcode.js:384
#: templates/js/translated/barcode.js:557 templates/js/translated/build.js:425
#: templates/js/translated/build.js:1032 templates/js/translated/order.js:508
#: templates/js/translated/order.js:1844 templates/js/translated/order.js:1955
#: templates/js/translated/order.js:1963 templates/js/translated/order.js:2044
-#: templates/js/translated/part.js:177 templates/js/translated/stock.js:555
-#: templates/js/translated/stock.js:749 templates/js/translated/stock.js:1497
-#: templates/js/translated/stock.js:2218
+#: templates/js/translated/part.js:177 templates/js/translated/stock.js:556
+#: templates/js/translated/stock.js:721 templates/js/translated/stock.js:928
+#: templates/js/translated/stock.js:1676 templates/js/translated/stock.js:2411
msgid "Location"
msgstr "地点"
@@ -975,11 +981,11 @@ msgstr ""
#: build/serializers.py:197 build/templates/build/build_base.html:137
#: build/templates/build/detail.html:63 order/models.py:552
-#: order/serializers.py:247 stock/templates/stock/item_base.html:180
+#: order/serializers.py:247 stock/templates/stock/item_base.html:186
#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:1661
#: templates/js/translated/order.js:591 templates/js/translated/order.js:840
-#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1472
-#: templates/js/translated/stock.js:2295 templates/js/translated/stock.js:2444
+#: templates/js/translated/order.js:1263 templates/js/translated/stock.js:1651
+#: templates/js/translated/stock.js:2488 templates/js/translated/stock.js:2637
msgid "Status"
msgstr "状态"
@@ -1000,33 +1006,33 @@ msgstr ""
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:319
+#: build/serializers.py:325
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:334 stock/serializers.py:569
+#: build/serializers.py:340 stock/serializers.py:583
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:348 order/models.py:277 order/serializers.py:240
-#: stock/models.py:365 stock/models.py:1081 stock/serializers.py:305
+#: build/serializers.py:354 order/models.py:277 order/serializers.py:240
+#: stock/models.py:365 stock/models.py:1077 stock/serializers.py:305
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/serializers.py:390 order/serializers.py:741
+#: build/serializers.py:396 order/serializers.py:741
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:396
+#: build/serializers.py:402
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:403
+#: build/serializers.py:409
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:431 order/serializers.py:984
+#: build/serializers.py:437 order/serializers.py:984
msgid "Allocation items must be provided"
msgstr ""
@@ -1067,33 +1073,33 @@ msgstr "删除生产"
msgid "Complete Build"
msgstr "生产完成"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:87
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:91
+#: build/templates/build/build_base.html:96
#, python-format
msgid "This Build Order is allocated to Sales Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:98
+#: build/templates/build/build_base.html:103
#, python-format
msgid "This Build Order is a child of Build Order %(link)s"
msgstr ""
-#: build/templates/build/build_base.html:105
+#: build/templates/build/build_base.html:110
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:110
+#: build/templates/build/build_base.html:115
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:120
msgid "Required build quantity has not yet been completed"
msgstr "所需生产数量尚未完成"
-#: build/templates/build/build_base.html:120
+#: build/templates/build/build_base.html:125
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
@@ -1131,12 +1137,12 @@ msgid "Completed"
msgstr "已完成"
#: build/templates/build/build_base.html:171
-#: build/templates/build/detail.html:95 order/models.py:925
-#: order/models.py:1021 order/templates/order/sales_order_base.html:9
+#: build/templates/build/detail.html:95 order/models.py:927
+#: order/models.py:1023 order/templates/order/sales_order_base.html:9
#: order/templates/order/sales_order_base.html:28
#: report/templates/report/inventree_build_order_base.html:136
#: report/templates/report/inventree_so_report.html:77
-#: stock/templates/stock/item_base.html:308
+#: stock/templates/stock/item_base.html:306
#: templates/js/translated/order.js:1218
msgid "Sales Order"
msgstr "销售订单"
@@ -1211,7 +1217,7 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:50 order/models.py:876 stock/forms.py:136
+#: build/templates/build/detail.html:50 order/models.py:878 stock/forms.py:136
#: templates/js/translated/order.js:592 templates/js/translated/order.js:1138
msgid "Destination"
msgstr ""
@@ -1225,8 +1231,8 @@ msgid "Allocated Parts"
msgstr ""
#: build/templates/build/detail.html:81
-#: stock/templates/stock/item_base.html:332
-#: templates/js/translated/stock.js:1486 templates/js/translated/stock.js:2451
+#: stock/templates/stock/item_base.html:330
+#: templates/js/translated/stock.js:1665 templates/js/translated/stock.js:2644
#: templates/js/translated/table_filters.js:151
#: templates/js/translated/table_filters.js:238
msgid "Batch"
@@ -1278,7 +1284,7 @@ msgstr "订单所需部件"
#: build/templates/build/detail.html:185
#: company/templates/company/detail.html:38
#: company/templates/company/detail.html:85 order/views.py:463
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order Parts"
msgstr "订购商品"
@@ -1347,7 +1353,7 @@ msgstr "生产备注"
#: order/templates/order/purchase_order_detail.html:108
#: order/templates/order/sales_order_detail.html:127
#: order/templates/order/sales_order_detail.html:186
-#: part/templates/part/detail.html:120 stock/templates/stock/item.html:115
+#: part/templates/part/detail.html:124 stock/templates/stock/item.html:115
#: stock/templates/stock/item.html:205
msgid "Edit Notes"
msgstr "编辑备注"
@@ -1489,7 +1495,7 @@ msgstr ""
msgid "Select {name} file to upload"
msgstr ""
-#: common/models.py:340 common/models.py:998 common/models.py:1206
+#: common/models.py:340 common/models.py:1004 common/models.py:1212
msgid "Settings key (must be unique - case insensitive"
msgstr ""
@@ -1651,7 +1657,7 @@ msgstr "模板"
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:956
+#: common/models.py:710 part/models.py:888 templates/js/translated/bom.js:1068
#: templates/js/translated/table_filters.js:168
#: templates/js/translated/table_filters.js:416
msgid "Assembly"
@@ -1953,256 +1959,264 @@ msgid "Group to which new users are assigned on registration"
msgstr ""
#: common/models.py:961
-msgid "Enable URL integration"
+msgid "Enforce MFA"
msgstr ""
#: common/models.py:962
-msgid "Enable plugins to add URL routes"
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:967
+msgid "Enable URL integration"
msgstr ""
#: common/models.py:968
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:974
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:969
+#: common/models.py:975
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:975
+#: common/models.py:981
msgid "Enable global setting integration"
msgstr ""
-#: common/models.py:976
+#: common/models.py:982
msgid "Enable plugins to integrate into inventree global settings"
msgstr ""
-#: common/models.py:982
+#: common/models.py:988
msgid "Enable app integration"
msgstr ""
-#: common/models.py:983
+#: common/models.py:989
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:1029
+#: common/models.py:1035
msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:1030
+#: common/models.py:1036
msgid "Show subscribed parts on the homepage"
msgstr ""
-#: common/models.py:1035
+#: common/models.py:1041
msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:1036
+#: common/models.py:1042
msgid "Show subscribed part categories on the homepage"
msgstr ""
-#: common/models.py:1041
+#: common/models.py:1047
msgid "Show latest parts"
msgstr "显示最近商品"
-#: common/models.py:1042
+#: common/models.py:1048
msgid "Show latest parts on the homepage"
msgstr "在主页上显示最近商品"
-#: common/models.py:1047
+#: common/models.py:1053
msgid "Recent Part Count"
msgstr ""
-#: common/models.py:1048
+#: common/models.py:1054
msgid "Number of recent parts to display on index page"
msgstr ""
-#: common/models.py:1054
+#: common/models.py:1060
msgid "Show unvalidated BOMs"
msgstr ""
-#: common/models.py:1055
+#: common/models.py:1061
msgid "Show BOMs that await validation on the homepage"
msgstr ""
-#: common/models.py:1060
+#: common/models.py:1066
msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:1061
+#: common/models.py:1067
msgid "Show recently changed stock items on the homepage"
msgstr ""
-#: common/models.py:1066
+#: common/models.py:1072
msgid "Recent Stock Count"
msgstr ""
-#: common/models.py:1067
+#: common/models.py:1073
msgid "Number of recent stock items to display on index page"
msgstr ""
-#: common/models.py:1072
+#: common/models.py:1078
msgid "Show low stock"
msgstr ""
-#: common/models.py:1073
+#: common/models.py:1079
msgid "Show low stock items on the homepage"
msgstr ""
-#: common/models.py:1078
+#: common/models.py:1084
msgid "Show depleted stock"
msgstr ""
-#: common/models.py:1079
+#: common/models.py:1085
msgid "Show depleted stock items on the homepage"
msgstr ""
-#: common/models.py:1084
+#: common/models.py:1090
msgid "Show needed stock"
msgstr ""
-#: common/models.py:1085
+#: common/models.py:1091
msgid "Show stock items needed for builds on the homepage"
msgstr ""
-#: common/models.py:1090
+#: common/models.py:1096
msgid "Show expired stock"
msgstr ""
-#: common/models.py:1091
+#: common/models.py:1097
msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:1096
+#: common/models.py:1102
msgid "Show stale stock"
msgstr ""
-#: common/models.py:1097
+#: common/models.py:1103
msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:1102
+#: common/models.py:1108
msgid "Show pending builds"
msgstr ""
-#: common/models.py:1103
+#: common/models.py:1109
msgid "Show pending builds on the homepage"
msgstr ""
-#: common/models.py:1108
+#: common/models.py:1114
msgid "Show overdue builds"
msgstr "显示逾期生产"
-#: common/models.py:1109
+#: common/models.py:1115
msgid "Show overdue builds on the homepage"
msgstr "在主页上显示逾期的生产"
-#: common/models.py:1114
+#: common/models.py:1120
msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:1115
+#: common/models.py:1121
msgid "Show outstanding POs on the homepage"
msgstr ""
-#: common/models.py:1120
+#: common/models.py:1126
msgid "Show overdue POs"
msgstr ""
-#: common/models.py:1121
+#: common/models.py:1127
msgid "Show overdue POs on the homepage"
msgstr ""
-#: common/models.py:1126
+#: common/models.py:1132
msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:1127
+#: common/models.py:1133
msgid "Show outstanding SOs on the homepage"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1138
msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:1133
+#: common/models.py:1139
msgid "Show overdue SOs on the homepage"
msgstr ""
-#: common/models.py:1139
+#: common/models.py:1145
msgid "Inline label display"
msgstr "内嵌标签显示"
-#: common/models.py:1140
+#: common/models.py:1146
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "在浏览器中显示 PDF 标签,而不是以文件形式下载"
-#: common/models.py:1146
+#: common/models.py:1152
msgid "Inline report display"
msgstr ""
-#: common/models.py:1147
+#: common/models.py:1153
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "在浏览器中显示 PDF 报告,而不是以文件形式下载"
-#: common/models.py:1153
+#: common/models.py:1159
msgid "Search Preview Results"
msgstr "搜索预览结果"
-#: common/models.py:1154
+#: common/models.py:1160
msgid "Number of results to show in search preview window"
msgstr "搜索预览窗口中显示的结果数"
-#: common/models.py:1160
+#: common/models.py:1166
msgid "Search Show Stock"
msgstr ""
-#: common/models.py:1161
+#: common/models.py:1167
msgid "Display stock levels in search preview window"
msgstr ""
-#: common/models.py:1167
+#: common/models.py:1173
msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:1168
+#: common/models.py:1174
msgid "Hide inactive parts in search preview window"
msgstr ""
-#: common/models.py:1174
+#: common/models.py:1180
msgid "Show Quantity in Forms"
msgstr "在表格中显示数量"
-#: common/models.py:1175
+#: common/models.py:1181
msgid "Display available part quantity in some forms"
msgstr "在某些表格中显示可用的商品数量"
-#: common/models.py:1181
+#: common/models.py:1187
msgid "Escape Key Closes Forms"
msgstr ""
-#: common/models.py:1182
+#: common/models.py:1188
msgid "Use the escape key to close modal forms"
msgstr ""
-#: common/models.py:1188
+#: common/models.py:1194
msgid "Fixed Navbar"
msgstr ""
-#: common/models.py:1189
+#: common/models.py:1195
msgid "InvenTree navbar position is fixed to the top of the screen"
msgstr ""
-#: common/models.py:1254 company/forms.py:43
+#: common/models.py:1260 company/forms.py:43
msgid "Price break quantity"
msgstr ""
-#: common/models.py:1261 company/serializers.py:264
+#: common/models.py:1267 company/serializers.py:264
#: company/templates/company/supplier_part.html:256
-#: templates/js/translated/part.js:852 templates/js/translated/part.js:1801
+#: templates/js/translated/part.js:852 templates/js/translated/part.js:1803
msgid "Price"
msgstr "价格"
-#: common/models.py:1262
+#: common/models.py:1268
msgid "Unit price at specified quantity"
msgstr ""
@@ -2290,7 +2304,7 @@ msgid "Contact phone number"
msgstr "联系电话"
#: company/models.py:125 company/templates/company/company_base.html:129
-#: templates/InvenTree/settings/user.html:47
+#: templates/InvenTree/settings/user.html:48
msgid "Email"
msgstr "电子邮件"
@@ -2347,8 +2361,8 @@ msgstr "货币"
msgid "Default currency used for this company"
msgstr "该公司使用的默认货币"
-#: company/models.py:320 company/models.py:535 stock/models.py:468
-#: stock/templates/stock/item_base.html:135
+#: company/models.py:320 company/models.py:535 stock/models.py:469
+#: stock/templates/stock/item_base.html:141
msgid "Base Part"
msgstr ""
@@ -2359,7 +2373,7 @@ msgstr "选择商品"
#: company/models.py:335 company/templates/company/company_base.html:73
#: company/templates/company/manufacturer_part.html:91
#: company/templates/company/supplier_part.html:97
-#: stock/templates/stock/item_base.html:381
+#: stock/templates/stock/item_base.html:379
#: templates/js/translated/company.js:333
#: templates/js/translated/company.js:514
#: templates/js/translated/company.js:797 templates/js/translated/part.js:232
@@ -2393,7 +2407,7 @@ msgstr "制造商商品描述"
#: company/models.py:409 company/models.py:558
#: company/templates/company/manufacturer_part.html:6
#: company/templates/company/manufacturer_part.html:23
-#: stock/templates/stock/item_base.html:391
+#: stock/templates/stock/item_base.html:389
msgid "Manufacturer Part"
msgstr "制造商商品"
@@ -2403,8 +2417,8 @@ msgstr "参数名称"
#: company/models.py:422
#: report/templates/report/inventree_test_report_base.html:95
-#: stock/models.py:1845 templates/js/translated/company.js:644
-#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1117
+#: stock/models.py:1960 templates/js/translated/company.js:644
+#: templates/js/translated/part.js:652 templates/js/translated/stock.js:1296
msgid "Value"
msgstr "数值"
@@ -2431,7 +2445,7 @@ msgstr ""
#: company/templates/company/supplier_part.html:87 order/models.py:224
#: order/templates/order/order_base.html:112
#: order/templates/order/order_wizard/select_pos.html:30 part/bom.py:219
-#: part/bom.py:247 stock/templates/stock/item_base.html:398
+#: part/bom.py:247 stock/templates/stock/item_base.html:396
#: templates/js/translated/company.js:337
#: templates/js/translated/company.js:771 templates/js/translated/order.js:823
#: templates/js/translated/part.js:213 templates/js/translated/part.js:800
@@ -2479,8 +2493,8 @@ msgid "Minimum charge (e.g. stocking fee)"
msgstr "最低收费(例如库存费)"
#: company/models.py:582 company/templates/company/supplier_part.html:112
-#: stock/models.py:491 stock/templates/stock/item_base.html:339
-#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1612
+#: stock/models.py:493 stock/templates/stock/item_base.html:337
+#: templates/js/translated/company.js:847 templates/js/translated/stock.js:1791
msgid "Packaging"
msgstr "打包"
@@ -2506,7 +2520,7 @@ msgstr "货币代码"
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12
-#: templates/InvenTree/search.html:182 templates/js/translated/company.js:322
+#: templates/InvenTree/search.html:176 templates/js/translated/company.js:322
msgid "Company"
msgstr "公司"
@@ -2548,11 +2562,11 @@ msgid "Download image from URL"
msgstr "从 URL 下载图片"
#: company/templates/company/company_base.html:83 order/models.py:547
-#: order/templates/order/sales_order_base.html:115 stock/models.py:509
-#: stock/models.py:510 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:291
+#: order/templates/order/sales_order_base.html:115 stock/models.py:512
+#: stock/models.py:513 stock/serializers.py:624
+#: stock/templates/stock/item_base.html:289
#: templates/js/translated/company.js:329 templates/js/translated/order.js:1240
-#: templates/js/translated/stock.js:2259
+#: templates/js/translated/stock.js:2452
msgid "Customer"
msgstr "客户"
@@ -2571,7 +2585,7 @@ msgstr "上传图片"
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
-#: templates/InvenTree/search.html:124
+#: templates/InvenTree/search.html:118
msgid "Supplier Parts"
msgstr "供应商商品"
@@ -2590,14 +2604,14 @@ msgstr "新建供应商商品"
#: company/templates/company/detail.html:79
#: company/templates/company/manufacturer_part.html:127
#: company/templates/company/manufacturer_part.html:156
-#: part/templates/part/category.html:167 part/templates/part/detail.html:342
+#: part/templates/part/category.html:171 part/templates/part/detail.html:342
#: part/templates/part/detail.html:370
msgid "Options"
msgstr "选项"
#: company/templates/company/detail.html:37
#: company/templates/company/detail.html:84
-#: part/templates/part/category.html:173
+#: part/templates/part/category.html:177
msgid "Order parts"
msgstr "订购商品"
@@ -2611,7 +2625,7 @@ msgstr "删除商品"
msgid "Delete Parts"
msgstr "删除商品"
-#: company/templates/company/detail.html:62 templates/InvenTree/search.html:109
+#: company/templates/company/detail.html:62 templates/InvenTree/search.html:103
msgid "Manufacturer Parts"
msgstr "制造商商品"
@@ -2633,8 +2647,8 @@ msgstr "供货商库存"
#: order/templates/order/order_base.html:13
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
-#: part/templates/part/detail.html:64 part/templates/part/part_sidebar.html:33
-#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:203
+#: part/templates/part/detail.html:68 part/templates/part/part_sidebar.html:33
+#: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197
#: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47
#: users/models.py:45
msgid "Purchase Orders"
@@ -2655,8 +2669,8 @@ msgstr "新建采购订单"
#: order/templates/order/sales_order_base.html:13
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
-#: part/templates/part/detail.html:87 part/templates/part/part_sidebar.html:37
-#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:223
+#: part/templates/part/detail.html:91 part/templates/part/part_sidebar.html:37
+#: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217
#: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58
#: users/models.py:46
msgid "Sales Orders"
@@ -2698,7 +2712,7 @@ msgid "Supplier List"
msgstr "供应商列表"
#: company/templates/company/manufacturer_part.html:14 company/views.py:55
-#: part/templates/part/prices.html:167 templates/InvenTree/search.html:184
+#: part/templates/part/prices.html:167 templates/InvenTree/search.html:178
#: templates/navbar.html:46
msgid "Manufacturers"
msgstr "制造商"
@@ -2706,7 +2720,7 @@ msgstr "制造商"
#: company/templates/company/manufacturer_part.html:35
#: company/templates/company/supplier_part.html:34
#: company/templates/company/supplier_part.html:159
-#: part/templates/part/detail.html:67 part/templates/part/part_base.html:76
+#: part/templates/part/detail.html:71 part/templates/part/part_base.html:76
msgid "Order part"
msgstr "订购商品"
@@ -2728,7 +2742,7 @@ msgstr "内部商品"
#: company/templates/company/manufacturer_part.html:114
#: company/templates/company/supplier_part.html:15 company/views.py:49
#: part/templates/part/part_sidebar.html:31 part/templates/part/prices.html:163
-#: templates/InvenTree/search.html:194 templates/navbar.html:45
+#: templates/InvenTree/search.html:188 templates/navbar.html:45
msgid "Suppliers"
msgstr "供应商"
@@ -2742,7 +2756,7 @@ msgstr "删除供应商商品"
#: company/templates/company/manufacturer_part.html:254
#: part/templates/part/detail.html:344 part/templates/part/detail.html:372
#: templates/js/translated/company.js:425 templates/js/translated/helpers.js:31
-#: users/models.py:206
+#: users/models.py:209
msgid "Delete"
msgstr "删除"
@@ -2765,7 +2779,7 @@ msgid "Delete parameters"
msgstr "删除参数"
#: company/templates/company/manufacturer_part.html:191
-#: part/templates/part/detail.html:867
+#: part/templates/part/detail.html:861
msgid "Add Parameter"
msgstr "添加参数"
@@ -2794,9 +2808,9 @@ msgid "Assigned Stock Items"
msgstr ""
#: company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 stock/models.py:476
-#: stock/templates/stock/item_base.html:403
-#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1569
+#: company/templates/company/supplier_part.html:24 stock/models.py:477
+#: stock/templates/stock/item_base.html:401
+#: templates/js/translated/company.js:787 templates/js/translated/stock.js:1748
msgid "Supplier Part"
msgstr "供应商商品"
@@ -2816,13 +2830,13 @@ msgid "Supplier Part Stock"
msgstr "供货商商品库存"
#: company/templates/company/supplier_part.html:141
-#: part/templates/part/detail.html:20 stock/templates/stock/location.html:162
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:166
msgid "Create new stock item"
msgstr ""
#: company/templates/company/supplier_part.html:142
-#: part/templates/part/detail.html:21 stock/templates/stock/location.html:163
-#: templates/js/translated/stock.js:359
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:167
+#: templates/js/translated/stock.js:360
msgid "New Stock Item"
msgstr ""
@@ -2832,7 +2846,7 @@ msgid "Supplier Part Orders"
msgstr "供应商商品订单"
#: company/templates/company/supplier_part.html:160
-#: part/templates/part/detail.html:68
+#: part/templates/part/detail.html:72
msgid "Order Part"
msgstr "订购商品"
@@ -2843,7 +2857,7 @@ msgstr "价格信息"
#: company/templates/company/supplier_part.html:184
#: company/templates/company/supplier_part.html:290
-#: part/templates/part/prices.html:271 part/views.py:1717
+#: part/templates/part/prices.html:271 part/views.py:1713
msgid "Add Price Break"
msgstr ""
@@ -2851,11 +2865,11 @@ msgstr ""
msgid "No price break information found"
msgstr ""
-#: company/templates/company/supplier_part.html:224 part/views.py:1779
+#: company/templates/company/supplier_part.html:224 part/views.py:1775
msgid "Delete Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:238 part/views.py:1765
+#: company/templates/company/supplier_part.html:238 part/views.py:1761
msgid "Edit Price Break"
msgstr ""
@@ -2869,14 +2883,14 @@ msgstr ""
#: company/templates/company/supplier_part_navbar.html:15
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:10
-#: templates/InvenTree/search.html:156
+#: templates/InvenTree/search.html:150
#: templates/InvenTree/settings/sidebar.html:41
-#: templates/js/translated/bom.js:216 templates/js/translated/part.js:434
-#: templates/js/translated/part.js:569 templates/js/translated/part.js:1059
-#: templates/js/translated/part.js:1220 templates/js/translated/stock.js:748
-#: templates/js/translated/stock.js:1401 templates/navbar.html:28
+#: templates/js/translated/bom.js:328 templates/js/translated/part.js:434
+#: templates/js/translated/part.js:569 templates/js/translated/part.js:1061
+#: templates/js/translated/part.js:1222 templates/js/translated/stock.js:927
+#: templates/js/translated/stock.js:1580 templates/navbar.html:28
msgid "Stock"
msgstr "库存"
@@ -2895,11 +2909,11 @@ msgid "Pricing"
msgstr "定价"
#: company/templates/company/supplier_part_sidebar.html:5
-#: stock/templates/stock/location.html:133
-#: stock/templates/stock/location.html:147
-#: stock/templates/stock/location.html:159
+#: stock/templates/stock/location.html:137
+#: stock/templates/stock/location.html:151
+#: stock/templates/stock/location.html:163
#: stock/templates/stock/location_sidebar.html:7
-#: templates/InvenTree/search.html:158 templates/js/translated/stock.js:2158
+#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2351
#: templates/stats.html:93 templates/stats.html:102 users/models.py:43
msgid "Stock Items"
msgstr "库存项"
@@ -2912,7 +2926,7 @@ msgstr "新增供应商"
msgid "New Manufacturer"
msgstr "新建制造商"
-#: company/views.py:61 templates/InvenTree/search.html:214
+#: company/views.py:61 templates/InvenTree/search.html:208
#: templates/navbar.html:57
msgid "Customers"
msgstr "客户信息"
@@ -3121,7 +3135,7 @@ msgstr ""
msgid "Target date for order completion. Order will be overdue after this date."
msgstr ""
-#: order/models.py:562 order/models.py:1026
+#: order/models.py:562 order/models.py:1028
#: templates/js/translated/order.js:1281 templates/js/translated/order.js:1429
msgid "Shipment Date"
msgstr ""
@@ -3130,7 +3144,7 @@ msgstr ""
msgid "shipped by"
msgstr ""
-#: order/models.py:634
+#: order/models.py:635
msgid "Order cannot be completed as no parts have been assigned"
msgstr ""
@@ -3138,172 +3152,172 @@ msgstr ""
msgid "Only a pending order can be marked as complete"
msgstr ""
-#: order/models.py:643
+#: order/models.py:642
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:647
+#: order/models.py:645
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:795
+#: order/models.py:797
msgid "Item quantity"
msgstr ""
-#: order/models.py:801
+#: order/models.py:803
msgid "Line item reference"
msgstr ""
-#: order/models.py:803
+#: order/models.py:805
msgid "Line item notes"
msgstr ""
-#: order/models.py:833 order/models.py:924 order/models.py:1020
+#: order/models.py:835 order/models.py:926 order/models.py:1022
#: templates/js/translated/order.js:1820
msgid "Order"
msgstr ""
-#: order/models.py:834 order/templates/order/order_base.html:9
+#: order/models.py:836 order/templates/order/order_base.html:9
#: order/templates/order/order_base.html:18
#: report/templates/report/inventree_po_report.html:77
-#: stock/templates/stock/item_base.html:353
+#: stock/templates/stock/item_base.html:351
#: templates/js/translated/order.js:801 templates/js/translated/part.js:775
-#: templates/js/translated/stock.js:1546 templates/js/translated/stock.js:2240
+#: templates/js/translated/stock.js:1725 templates/js/translated/stock.js:2433
msgid "Purchase Order"
msgstr ""
-#: order/models.py:855
+#: order/models.py:857
msgid "Supplier part"
msgstr "供应商商品"
-#: order/models.py:862 order/templates/order/order_base.html:163
+#: order/models.py:864 order/templates/order/order_base.html:163
#: templates/js/translated/order.js:589 templates/js/translated/order.js:1118
#: templates/js/translated/part.js:847 templates/js/translated/part.js:873
#: templates/js/translated/table_filters.js:317
msgid "Received"
msgstr ""
-#: order/models.py:863
+#: order/models.py:865
msgid "Number of items received"
msgstr ""
-#: order/models.py:870 part/templates/part/prices.html:176 stock/models.py:603
-#: stock/serializers.py:170 stock/templates/stock/item_base.html:360
-#: templates/js/translated/stock.js:1600
+#: order/models.py:872 part/templates/part/prices.html:176 stock/models.py:606
+#: stock/serializers.py:170 stock/templates/stock/item_base.html:358
+#: templates/js/translated/stock.js:1779
msgid "Purchase Price"
msgstr "采购价格"
-#: order/models.py:871
+#: order/models.py:873
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:879
+#: order/models.py:881
msgid "Where does the Purchaser want this item to be stored?"
msgstr ""
-#: order/models.py:934 part/templates/part/part_pricing.html:112
+#: order/models.py:936 part/templates/part/part_pricing.html:112
#: part/templates/part/prices.html:116 part/templates/part/prices.html:284
msgid "Sale Price"
msgstr "销售价格"
-#: order/models.py:935
+#: order/models.py:937
msgid "Unit sale price"
msgstr ""
-#: order/models.py:940
+#: order/models.py:942
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1027
+#: order/models.py:1029
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1034
+#: order/models.py:1036
msgid "Checked By"
msgstr ""
-#: order/models.py:1035
+#: order/models.py:1037
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1043
+#: order/models.py:1045
msgid "Shipment number"
msgstr ""
-#: order/models.py:1050
+#: order/models.py:1052
msgid "Shipment notes"
msgstr ""
-#: order/models.py:1057
+#: order/models.py:1059
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1058
+#: order/models.py:1060
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1068
+#: order/models.py:1070
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1071
+#: order/models.py:1073
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1147 order/models.py:1149
+#: order/models.py:1149 order/models.py:1151
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1153
+#: order/models.py:1155
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1155
+#: order/models.py:1157
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1158
+#: order/models.py:1160
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1162
+#: order/models.py:1164
msgid "StockItem is over-allocated"
msgstr ""
-#: order/models.py:1168 order/serializers.py:734
+#: order/models.py:1170 order/serializers.py:734
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:1171
+#: order/models.py:1173
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:1172
+#: order/models.py:1174
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:1180
+#: order/models.py:1182
msgid "Line"
msgstr ""
-#: order/models.py:1188 order/serializers.py:825 order/serializers.py:953
+#: order/models.py:1190 order/serializers.py:825 order/serializers.py:953
#: templates/js/translated/model_renderers.js:251
msgid "Shipment"
msgstr ""
-#: order/models.py:1189
+#: order/models.py:1191
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:1201
+#: order/models.py:1203
msgid "Item"
msgstr ""
-#: order/models.py:1202
+#: order/models.py:1204
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:1205
+#: order/models.py:1207
msgid "Enter stock allocation quantity"
msgstr ""
@@ -3530,7 +3544,7 @@ msgstr ""
#: part/templates/part/import_wizard/match_references.html:49
#: templates/js/translated/build.js:245 templates/js/translated/build.js:1256
#: templates/js/translated/order.js:537 templates/js/translated/order.js:1488
-#: templates/js/translated/stock.js:592
+#: templates/js/translated/stock.js:593 templates/js/translated/stock.js:761
msgid "Remove row"
msgstr "移除行"
@@ -3722,7 +3736,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:48
-#: templates/js/translated/bom.js:608 templates/js/translated/build.js:1188
+#: templates/js/translated/bom.js:720 templates/js/translated/build.js:1188
msgid "Actions"
msgstr ""
@@ -3797,24 +3811,24 @@ msgstr ""
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/api.py:760
+#: part/api.py:777
msgid "Must be greater than zero"
msgstr "必须大于0"
-#: part/api.py:764
+#: part/api.py:781
msgid "Must be a valid quantity"
msgstr "必须是有效的数量"
-#: part/api.py:779
+#: part/api.py:796
msgid "Specify location for initial part stock"
msgstr "指定初始初始商品仓储地点"
-#: part/api.py:810 part/api.py:814 part/api.py:829 part/api.py:833
+#: part/api.py:827 part/api.py:831 part/api.py:846 part/api.py:850
msgid "This field is required"
msgstr "此字段为必填"
#: part/bom.py:125 part/models.py:81 part/models.py:816
-#: part/templates/part/category.html:104 part/templates/part/part_base.html:338
+#: part/templates/part/category.html:108 part/templates/part/part_base.html:338
msgid "Default Location"
msgstr "默认仓储地点"
@@ -3822,99 +3836,43 @@ msgstr "默认仓储地点"
msgid "Available Stock"
msgstr "可用库存"
-#: part/forms.py:63
-msgid "File Format"
-msgstr "文件格式"
-
-#: part/forms.py:63
-msgid "Select output file format"
-msgstr "选择输出文件格式"
-
-#: part/forms.py:65
-msgid "Cascading"
-msgstr ""
-
-#: part/forms.py:65
-msgid "Download cascading / multi-level BOM"
-msgstr ""
-
-#: part/forms.py:67
-msgid "Levels"
-msgstr "等级"
-
-#: part/forms.py:67
-msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
-
-#: part/forms.py:69
-msgid "Include Parameter Data"
-msgstr "包含参数数据"
-
-#: part/forms.py:69
-msgid "Include part parameters data in exported BOM"
-msgstr "在导出的BOM 中包含商品参数"
-
-#: part/forms.py:71
-msgid "Include Stock Data"
-msgstr "包括库存数据"
-
-#: part/forms.py:71
-msgid "Include part stock data in exported BOM"
-msgstr "在导出 BOM 中包括库存数据"
-
-#: part/forms.py:73
-msgid "Include Manufacturer Data"
-msgstr "包括制造商数据"
-
-#: part/forms.py:73
-msgid "Include part manufacturer data in exported BOM"
-msgstr "在导出 BOM 中包含制造商数据"
-
-#: part/forms.py:75
-msgid "Include Supplier Data"
-msgstr "包含供应商数据"
-
-#: part/forms.py:75
-msgid "Include part supplier data in exported BOM"
-msgstr "在导出 BOM 中包含供应商数据"
-
-#: part/forms.py:96 part/models.py:2427
+#: part/forms.py:66 part/models.py:2427
msgid "Parent Part"
msgstr ""
-#: part/forms.py:97 part/templates/part/bom_duplicate.html:7
+#: part/forms.py:67 part/templates/part/bom_duplicate.html:7
msgid "Select parent part to copy BOM from"
msgstr ""
-#: part/forms.py:103
+#: part/forms.py:73
msgid "Clear existing BOM items"
msgstr ""
-#: part/forms.py:109
+#: part/forms.py:79
msgid "Confirm BOM duplication"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "validate"
msgstr ""
-#: part/forms.py:127
+#: part/forms.py:97
msgid "Confirm that the BOM is correct"
msgstr "确认BOM 正确"
-#: part/forms.py:163
+#: part/forms.py:133
msgid "Select part category"
msgstr "选择类别"
-#: part/forms.py:200
+#: part/forms.py:170
msgid "Add parameter template to same level categories"
msgstr ""
-#: part/forms.py:204
+#: part/forms.py:174
msgid "Add parameter template to all categories"
msgstr ""
-#: part/forms.py:224
+#: part/forms.py:194
msgid "Input quantity for price calculation"
msgstr ""
@@ -3930,24 +3888,24 @@ msgstr ""
msgid "Default keywords for parts in this category"
msgstr "此类别商品的默认关键字"
-#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:11
+#: part/models.py:95 part/models.py:2473 part/templates/part/category.html:15
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "商品类别"
-#: part/models.py:96 part/templates/part/category.html:124
-#: templates/InvenTree/search.html:101 templates/stats.html:84
+#: part/models.py:96 part/templates/part/category.html:128
+#: templates/InvenTree/search.html:95 templates/stats.html:84
#: users/models.py:40
msgid "Part Categories"
msgstr "商品类别"
#: part/models.py:358 part/templates/part/cat_link.html:3
-#: part/templates/part/category.html:13 part/templates/part/category.html:129
-#: part/templates/part/category.html:149
+#: part/templates/part/category.html:17 part/templates/part/category.html:133
+#: part/templates/part/category.html:153
#: part/templates/part/category_sidebar.html:9
-#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:88
+#: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82
#: templates/InvenTree/settings/sidebar.html:37
-#: templates/js/translated/part.js:1597 templates/navbar.html:21
+#: templates/js/translated/part.js:1599 templates/navbar.html:21
#: templates/stats.html:80 templates/stats.html:89 users/models.py:41
msgid "Parts"
msgstr "商品"
@@ -4001,7 +3959,7 @@ msgstr ""
msgid "Part description"
msgstr "商品描述"
-#: part/models.py:770 part/templates/part/category.html:82
+#: part/models.py:770 part/templates/part/category.html:86
#: part/templates/part/part_base.html:302
msgid "Keywords"
msgstr "关键词"
@@ -4014,7 +3972,7 @@ msgstr "提高搜索结果可见性的关键字"
#: part/templates/part/part_base.html:265
#: part/templates/part/set_category.html:15
#: templates/InvenTree/settings/settings.html:172
-#: templates/js/translated/part.js:1202
+#: templates/js/translated/part.js:1204
msgid "Category"
msgstr "类别"
@@ -4023,8 +3981,8 @@ msgid "Part category"
msgstr "商品类别"
#: part/models.py:784 part/templates/part/part_base.html:274
-#: templates/js/translated/part.js:557 templates/js/translated/part.js:1155
-#: templates/js/translated/stock.js:1373
+#: templates/js/translated/part.js:557 templates/js/translated/part.js:1157
+#: templates/js/translated/stock.js:1552
msgid "IPN"
msgstr ""
@@ -4145,8 +4103,8 @@ msgstr ""
msgid "Test with this name already exists for this part"
msgstr ""
-#: part/models.py:2310 templates/js/translated/part.js:1648
-#: templates/js/translated/stock.js:1097
+#: part/models.py:2310 templates/js/translated/part.js:1650
+#: templates/js/translated/stock.js:1276
msgid "Test Name"
msgstr ""
@@ -4162,7 +4120,7 @@ msgstr ""
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:2322 templates/js/translated/part.js:1657
+#: part/models.py:2322 templates/js/translated/part.js:1659
#: templates/js/translated/table_filters.js:281
msgid "Required"
msgstr ""
@@ -4171,7 +4129,7 @@ msgstr ""
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:2328 templates/js/translated/part.js:1665
+#: part/models.py:2328 templates/js/translated/part.js:1667
msgid "Requires Value"
msgstr ""
@@ -4179,7 +4137,7 @@ msgstr ""
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:2334 templates/js/translated/part.js:1672
+#: part/models.py:2334 templates/js/translated/part.js:1674
msgid "Requires Attachment"
msgstr ""
@@ -4241,8 +4199,8 @@ msgstr ""
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:2578 templates/js/translated/bom.js:454
-#: templates/js/translated/bom.js:528
+#: part/models.py:2578 templates/js/translated/bom.js:566
+#: templates/js/translated/bom.js:640
#: templates/js/translated/table_filters.js:92
msgid "Optional"
msgstr "可选项"
@@ -4275,8 +4233,8 @@ msgstr ""
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:2594 templates/js/translated/bom.js:545
-#: templates/js/translated/bom.js:552
+#: part/models.py:2594 templates/js/translated/bom.js:657
+#: templates/js/translated/bom.js:664
#: templates/js/translated/table_filters.js:68
#: templates/js/translated/table_filters.js:88
msgid "Inherited"
@@ -4286,7 +4244,7 @@ msgstr "继承项"
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:2600 templates/js/translated/bom.js:537
+#: part/models.py:2600 templates/js/translated/bom.js:649
msgid "Allow Variants"
msgstr ""
@@ -4406,100 +4364,100 @@ msgstr ""
msgid "This will validate each line in the BOM."
msgstr ""
-#: part/templates/part/category.html:24 part/templates/part/category.html:28
+#: part/templates/part/category.html:28 part/templates/part/category.html:32
msgid "You are subscribed to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:32
+#: part/templates/part/category.html:36
msgid "Subscribe to notifications for this category"
msgstr ""
-#: part/templates/part/category.html:38
+#: part/templates/part/category.html:42
msgid "Category Actions"
msgstr ""
-#: part/templates/part/category.html:43
+#: part/templates/part/category.html:47
msgid "Edit category"
msgstr ""
-#: part/templates/part/category.html:44
+#: part/templates/part/category.html:48
msgid "Edit Category"
msgstr ""
-#: part/templates/part/category.html:48
+#: part/templates/part/category.html:52
msgid "Delete category"
msgstr ""
-#: part/templates/part/category.html:49
+#: part/templates/part/category.html:53
msgid "Delete Category"
msgstr ""
-#: part/templates/part/category.html:57
+#: part/templates/part/category.html:61
msgid "Create new part category"
msgstr "新建商品类别"
-#: part/templates/part/category.html:58
+#: part/templates/part/category.html:62
msgid "New Category"
msgstr ""
-#: part/templates/part/category.html:76 part/templates/part/category.html:89
+#: part/templates/part/category.html:80 part/templates/part/category.html:93
msgid "Category Path"
msgstr "类别路径"
-#: part/templates/part/category.html:90
+#: part/templates/part/category.html:94
msgid "Top level part category"
msgstr ""
-#: part/templates/part/category.html:110 part/templates/part/category.html:201
+#: part/templates/part/category.html:114 part/templates/part/category.html:205
#: part/templates/part/category_sidebar.html:7
msgid "Subcategories"
msgstr "子类别"
-#: part/templates/part/category.html:115
+#: part/templates/part/category.html:119
msgid "Parts (Including subcategories)"
msgstr "商品 (包括子类别)"
-#: part/templates/part/category.html:152
+#: part/templates/part/category.html:156
msgid "Export Part Data"
msgstr "导出商品数据"
-#: part/templates/part/category.html:153 part/templates/part/category.html:177
+#: part/templates/part/category.html:157 part/templates/part/category.html:181
msgid "Export"
msgstr "导出"
-#: part/templates/part/category.html:156
+#: part/templates/part/category.html:160
msgid "Create new part"
msgstr "新建商品"
-#: part/templates/part/category.html:157 templates/js/translated/bom.js:40
+#: part/templates/part/category.html:161 templates/js/translated/bom.js:152
msgid "New Part"
msgstr "新商品"
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set category"
msgstr "设置类别"
-#: part/templates/part/category.html:171
+#: part/templates/part/category.html:175
msgid "Set Category"
msgstr "设置类别"
-#: part/templates/part/category.html:175
+#: part/templates/part/category.html:179
msgid "Print Labels"
msgstr "打印标签"
-#: part/templates/part/category.html:177
+#: part/templates/part/category.html:181
msgid "Export Data"
msgstr "导出数据"
-#: part/templates/part/category.html:191
+#: part/templates/part/category.html:195
msgid "Part Parameters"
msgstr "商品参数"
-#: part/templates/part/category.html:268
+#: part/templates/part/category.html:288
msgid "Create Part Category"
msgstr "创建商品类别"
-#: part/templates/part/category.html:295
+#: part/templates/part/category.html:315
msgid "Create Part"
msgstr "创建商品"
@@ -4566,24 +4524,24 @@ msgstr ""
msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)"
msgstr ""
-#: part/templates/part/detail.html:17
+#: part/templates/part/detail.html:21
msgid "Part Stock"
msgstr "商品库存"
-#: part/templates/part/detail.html:29
+#: part/templates/part/detail.html:33
#, python-format
msgid "Showing stock for all variants of %(full_name)s"
msgstr ""
-#: part/templates/part/detail.html:39
+#: part/templates/part/detail.html:43
msgid "Part Test Templates"
msgstr ""
-#: part/templates/part/detail.html:44
+#: part/templates/part/detail.html:48
msgid "Add Test Template"
msgstr ""
-#: part/templates/part/detail.html:101
+#: part/templates/part/detail.html:105
msgid "Sales Order Allocations"
msgstr ""
@@ -4619,7 +4577,7 @@ msgstr ""
msgid "Export actions"
msgstr ""
-#: part/templates/part/detail.html:242
+#: part/templates/part/detail.html:242 templates/js/translated/bom.js:70
msgid "Export BOM"
msgstr ""
@@ -4683,38 +4641,38 @@ msgstr ""
msgid "Create BOM Item"
msgstr ""
-#: part/templates/part/detail.html:657
+#: part/templates/part/detail.html:651
msgid "Related Part"
msgstr ""
-#: part/templates/part/detail.html:665
+#: part/templates/part/detail.html:659
msgid "Add Related Part"
msgstr ""
-#: part/templates/part/detail.html:760
+#: part/templates/part/detail.html:754
msgid "Add Test Result Template"
msgstr ""
-#: part/templates/part/detail.html:817
+#: part/templates/part/detail.html:811
msgid "Edit Part Notes"
msgstr "编辑商品注释"
-#: part/templates/part/detail.html:930
+#: part/templates/part/detail.html:924
#, python-format
msgid "Purchase Unit Price - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:942
+#: part/templates/part/detail.html:936
#, python-format
msgid "Unit Price-Cost Difference - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:954
+#: part/templates/part/detail.html:948
#, python-format
msgid "Supplier Unit Cost - %(currency)s"
msgstr ""
-#: part/templates/part/detail.html:1043
+#: part/templates/part/detail.html:1037
#, python-format
msgid "Unit Price - %(currency)s"
msgstr ""
@@ -4745,20 +4703,20 @@ msgid "Subscribe to notifications for this part"
msgstr ""
#: part/templates/part/part_base.html:43
-#: stock/templates/stock/item_base.html:28
-#: stock/templates/stock/location.html:29
+#: stock/templates/stock/item_base.html:34
+#: stock/templates/stock/location.html:33
msgid "Barcode actions"
msgstr ""
#: part/templates/part/part_base.html:45
-#: stock/templates/stock/item_base.html:32
-#: stock/templates/stock/location.html:31 templates/qr_button.html:1
+#: stock/templates/stock/item_base.html:38
+#: stock/templates/stock/location.html:35 templates/qr_button.html:1
msgid "Show QR Code"
msgstr ""
#: part/templates/part/part_base.html:46
-#: stock/templates/stock/item_base.html:48
-#: stock/templates/stock/location.html:32
+#: stock/templates/stock/item_base.html:54
+#: stock/templates/stock/location.html:36
msgid "Print Label"
msgstr "打印标签"
@@ -4767,8 +4725,8 @@ msgid "Show pricing information"
msgstr ""
#: part/templates/part/part_base.html:56
-#: stock/templates/stock/item_base.html:103
-#: stock/templates/stock/location.html:40
+#: stock/templates/stock/item_base.html:109
+#: stock/templates/stock/location.html:44
msgid "Stock actions"
msgstr ""
@@ -4848,7 +4806,7 @@ msgstr ""
msgid "In Stock"
msgstr ""
-#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1235
+#: part/templates/part/part_base.html:203 templates/js/translated/part.js:1237
msgid "On Order"
msgstr ""
@@ -4864,12 +4822,12 @@ msgstr ""
msgid "Allocated to Orders"
msgstr ""
-#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:566
+#: part/templates/part/part_base.html:239 templates/js/translated/bom.js:678
msgid "Can Build"
msgstr ""
-#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1066
-#: templates/js/translated/part.js:1239
+#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1068
+#: templates/js/translated/part.js:1241
msgid "Building"
msgstr ""
@@ -4882,7 +4840,7 @@ msgid "Latest Serial Number"
msgstr ""
#: part/templates/part/part_base.html:328
-#: stock/templates/stock/item_base.html:159
+#: stock/templates/stock/item_base.html:165
msgid "Search for serial number"
msgstr ""
@@ -4921,7 +4879,7 @@ msgid "Total Cost"
msgstr ""
#: part/templates/part/part_pricing.html:40 part/templates/part/prices.html:40
-#: templates/js/translated/bom.js:520
+#: templates/js/translated/bom.js:632
msgid "No supplier pricing available"
msgstr ""
@@ -5036,7 +4994,7 @@ msgstr ""
msgid "Calculation parameters"
msgstr ""
-#: part/templates/part/prices.html:155 templates/js/translated/bom.js:514
+#: part/templates/part/prices.html:155 templates/js/translated/bom.js:626
msgid "Supplier Cost"
msgstr ""
@@ -5058,7 +5016,7 @@ msgstr ""
msgid "Internal Cost"
msgstr ""
-#: part/templates/part/prices.html:215 part/views.py:1788
+#: part/templates/part/prices.html:215 part/views.py:1784
msgid "Add Internal Price Break"
msgstr ""
@@ -5078,9 +5036,9 @@ msgstr ""
msgid "Set category for the following parts"
msgstr "为以下商品设置类别"
-#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:476
-#: templates/js/translated/part.js:436 templates/js/translated/part.js:1056
-#: templates/js/translated/part.js:1243
+#: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:588
+#: templates/js/translated/part.js:436 templates/js/translated/part.js:1058
+#: templates/js/translated/part.js:1245
msgid "No Stock"
msgstr ""
@@ -5154,67 +5112,67 @@ msgstr ""
msgid "Match Parts"
msgstr "匹配商品"
-#: part/views.py:1196
+#: part/views.py:1195
msgid "Export Bill of Materials"
msgstr ""
-#: part/views.py:1248
+#: part/views.py:1244
msgid "Confirm Part Deletion"
msgstr "确认删除商品"
-#: part/views.py:1255
+#: part/views.py:1251
msgid "Part was deleted"
msgstr "商品已删除"
-#: part/views.py:1264
+#: part/views.py:1260
msgid "Part Pricing"
msgstr "商品价格"
-#: part/views.py:1413
+#: part/views.py:1409
msgid "Create Part Parameter Template"
msgstr ""
-#: part/views.py:1423
+#: part/views.py:1419
msgid "Edit Part Parameter Template"
msgstr ""
-#: part/views.py:1430
+#: part/views.py:1426
msgid "Delete Part Parameter Template"
msgstr ""
-#: part/views.py:1489 templates/js/translated/part.js:313
+#: part/views.py:1485 templates/js/translated/part.js:313
msgid "Edit Part Category"
msgstr "编辑商品类别"
-#: part/views.py:1527
+#: part/views.py:1523
msgid "Delete Part Category"
msgstr "删除商品类别"
-#: part/views.py:1533
+#: part/views.py:1529
msgid "Part category was deleted"
msgstr "商品类别已删除"
-#: part/views.py:1542
+#: part/views.py:1538
msgid "Create Category Parameter Template"
msgstr "创建类别参数模板"
-#: part/views.py:1643
+#: part/views.py:1639
msgid "Edit Category Parameter Template"
msgstr "编辑类别参数模板"
-#: part/views.py:1699
+#: part/views.py:1695
msgid "Delete Category Parameter Template"
msgstr "删除类别参数模板"
-#: part/views.py:1721
+#: part/views.py:1717
msgid "Added new price break"
msgstr ""
-#: part/views.py:1797
+#: part/views.py:1793
msgid "Edit Internal Price Break"
msgstr ""
-#: part/views.py:1805
+#: part/views.py:1801
msgid "Delete Internal Price Break"
msgstr ""
@@ -5388,12 +5346,12 @@ msgid "Stock Item Test Report"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:79
-#: stock/models.py:514 stock/templates/stock/item_base.html:149
+#: stock/models.py:517 stock/templates/stock/item_base.html:155
#: templates/js/translated/build.js:238 templates/js/translated/build.js:642
#: templates/js/translated/build.js:1018
#: templates/js/translated/model_renderers.js:95
#: templates/js/translated/order.js:99 templates/js/translated/order.js:1945
-#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:414
+#: templates/js/translated/order.js:2034 templates/js/translated/stock.js:415
msgid "Serial Number"
msgstr "序列号"
@@ -5402,19 +5360,19 @@ msgid "Test Results"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:93
-#: stock/models.py:1833
+#: stock/models.py:1948
msgid "Test"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:94
-#: stock/models.py:1839
+#: stock/models.py:1954
msgid "Result"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:97
#: templates/InvenTree/settings/plugin.html:49
#: templates/InvenTree/settings/plugin_settings.html:38
-#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2174
+#: templates/js/translated/order.js:849 templates/js/translated/stock.js:2367
msgid "Date"
msgstr ""
@@ -5432,17 +5390,18 @@ msgid "Installed Items"
msgstr ""
#: report/templates/report/inventree_test_report_base.html:137
-#: templates/js/translated/stock.js:577 templates/js/translated/stock.js:2434
+#: templates/js/translated/stock.js:578 templates/js/translated/stock.js:748
+#: templates/js/translated/stock.js:2627
msgid "Serial"
msgstr ""
-#: stock/api.py:446
+#: stock/api.py:478
msgid "Quantity is required"
msgstr ""
-#: stock/forms.py:77 stock/forms.py:251 stock/models.py:571
-#: stock/templates/stock/item_base.html:186
-#: templates/js/translated/stock.js:1522
+#: stock/forms.py:77 stock/forms.py:251 stock/models.py:574
+#: stock/templates/stock/item_base.html:192
+#: templates/js/translated/stock.js:1701
msgid "Expiry Date"
msgstr ""
@@ -5490,12 +5449,12 @@ msgstr ""
msgid "Confirm removal of installed stock items"
msgstr ""
-#: stock/models.py:60 stock/models.py:608
-#: stock/templates/stock/item_base.html:417
+#: stock/models.py:60 stock/models.py:611
+#: stock/templates/stock/item_base.html:415
msgid "Owner"
msgstr ""
-#: stock/models.py:61 stock/models.py:609
+#: stock/models.py:61 stock/models.py:612
msgid "Select Owner"
msgstr ""
@@ -5528,150 +5487,190 @@ msgstr ""
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:460
+#: stock/models.py:461
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:469
+#: stock/models.py:470
msgid "Base part"
msgstr ""
-#: stock/models.py:477
+#: stock/models.py:478
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:482 stock/templates/stock/location.html:12
+#: stock/models.py:484 stock/templates/stock/location.html:16
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "仓储地点"
-#: stock/models.py:485
+#: stock/models.py:487
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:492
+#: stock/models.py:494
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:497 stock/templates/stock/item_base.html:299
+#: stock/models.py:500 stock/templates/stock/item_base.html:297
msgid "Installed In"
msgstr ""
-#: stock/models.py:500
+#: stock/models.py:503
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:516
+#: stock/models.py:519
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:530
+#: stock/models.py:533
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:534
+#: stock/models.py:537
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:543
+#: stock/models.py:546
msgid "Source Build"
msgstr ""
-#: stock/models.py:545
+#: stock/models.py:548
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:556
+#: stock/models.py:559
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:559
+#: stock/models.py:562
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:565
+#: stock/models.py:568
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:572
+#: stock/models.py:575
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:585
+#: stock/models.py:588
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:595 stock/templates/stock/item.html:111
+#: stock/models.py:598 stock/templates/stock/item.html:111
msgid "Stock Item Notes"
msgstr ""
-#: stock/models.py:604
+#: stock/models.py:607
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:1072
+#: stock/models.py:1068
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1078
+#: stock/models.py:1074
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1084
+#: stock/models.py:1080
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({n})"
msgstr ""
-#: stock/models.py:1087
+#: stock/models.py:1083
msgid "Serial numbers must be a list of integers"
msgstr ""
-#: stock/models.py:1090
+#: stock/models.py:1086
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1097
+#: stock/models.py:1093
#, python-brace-format
msgid "Serial numbers already exist: {exists}"
msgstr ""
-#: stock/models.py:1255
+#: stock/models.py:1164
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1167
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1170
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1173
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1176
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1179
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1186 stock/serializers.py:773
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1190
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1194
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1198
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:1369
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:1753
+#: stock/models.py:1868
msgid "Entry notes"
msgstr ""
-#: stock/models.py:1810
+#: stock/models.py:1925
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:1816
+#: stock/models.py:1931
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:1834
+#: stock/models.py:1949
msgid "Test name"
msgstr ""
-#: stock/models.py:1840 templates/js/translated/table_filters.js:271
+#: stock/models.py:1955 templates/js/translated/table_filters.js:271
msgid "Test result"
msgstr ""
-#: stock/models.py:1846
+#: stock/models.py:1961
msgid "Test output value"
msgstr ""
-#: stock/models.py:1853
+#: stock/models.py:1968
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:1859
+#: stock/models.py:1974
msgid "Test notes"
msgstr ""
@@ -5696,7 +5695,7 @@ msgstr ""
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:326 stock/serializers.py:814
+#: stock/serializers.py:326 stock/serializers.py:730 stock/serializers.py:971
msgid "Destination stock location"
msgstr ""
@@ -5708,39 +5707,63 @@ msgstr ""
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:573
+#: stock/serializers.py:587
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:577
+#: stock/serializers.py:591
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:581
+#: stock/serializers.py:595
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:611
+#: stock/serializers.py:625
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:617
+#: stock/serializers.py:631
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:625
+#: stock/serializers.py:639
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:635 stock/serializers.py:722
+#: stock/serializers.py:649 stock/serializers.py:879
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:684
+#: stock/serializers.py:737
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:742
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:743
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:748
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:749
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:759
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:841
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:712
+#: stock/serializers.py:869
msgid "Stock transaction notes"
msgstr ""
@@ -5765,7 +5788,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:50
+#: stock/templates/stock/item.html:68 stock/templates/stock/item_base.html:56
msgid "Test Report"
msgstr ""
@@ -5797,197 +5820,189 @@ msgstr ""
msgid "Delete Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:35
+#: stock/templates/stock/item_base.html:41
#: templates/js/translated/barcode.js:330
#: templates/js/translated/barcode.js:335
msgid "Unlink Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:37
+#: stock/templates/stock/item_base.html:43
msgid "Link Barcode"
msgstr ""
-#: stock/templates/stock/item_base.html:39 templates/stock_table.html:24
+#: stock/templates/stock/item_base.html:45 templates/stock_table.html:24
msgid "Scan to Location"
msgstr ""
-#: stock/templates/stock/item_base.html:46
+#: stock/templates/stock/item_base.html:52
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item_base.html:71
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:69
-#: stock/templates/stock/location.html:47 templates/stock_table.html:50
+#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/location.html:51 templates/stock_table.html:50
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:72 templates/stock_table.html:48
+#: stock/templates/stock/item_base.html:78 templates/stock_table.html:48
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:75 templates/stock_table.html:49
+#: stock/templates/stock/item_base.html:81 templates/stock_table.html:49
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:78
+#: stock/templates/stock/item_base.html:84
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
-#: stock/templates/stock/location.html:53
+#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/location.html:57
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85 templates/stock_table.html:53
+#: stock/templates/stock/item_base.html:91 templates/stock_table.html:54
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:88
+#: stock/templates/stock/item_base.html:94
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:91
+#: stock/templates/stock/item_base.html:97
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:100
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:108
+#: stock/templates/stock/item_base.html:114
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:111
+#: stock/templates/stock/item_base.html:117
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:113
+#: stock/templates/stock/item_base.html:119
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:116
+#: stock/templates/stock/item_base.html:122
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:154
+#: stock/templates/stock/item_base.html:160
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:163
+#: stock/templates/stock/item_base.html:169
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:190
+#: stock/templates/stock/item_base.html:196
#: templates/js/translated/table_filters.js:252
msgid "Expired"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:192
+#: stock/templates/stock/item_base.html:198
#: templates/js/translated/table_filters.js:258
msgid "Stale"
msgstr ""
-#: stock/templates/stock/item_base.html:199
-#: templates/js/translated/stock.js:1535
+#: stock/templates/stock/item_base.html:205
+#: templates/js/translated/stock.js:1714
msgid "Last Updated"
msgstr ""
-#: stock/templates/stock/item_base.html:204
+#: stock/templates/stock/item_base.html:210
msgid "Last Stocktake"
msgstr ""
-#: stock/templates/stock/item_base.html:208
+#: stock/templates/stock/item_base.html:214
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:226
+#: stock/templates/stock/item_base.html:232
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:233
+#: stock/templates/stock/item_base.html:239
msgid "This stock item is in production and cannot be edited."
msgstr "此库存项目正在生产中,无法编辑。"
-#: stock/templates/stock/item_base.html:234
+#: stock/templates/stock/item_base.html:240
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:247
+#: stock/templates/stock/item_base.html:253
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:255
+#: stock/templates/stock/item_base.html:261
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:263
+#: stock/templates/stock/item_base.html:269
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:269
+#: stock/templates/stock/item_base.html:275
msgid "This stock item is serialized - it has a unique serial number and the quantity cannot be adjusted."
msgstr ""
-#: stock/templates/stock/item_base.html:273
-msgid "This stock item cannot be deleted as it has child items"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:277
-msgid "This stock item will be automatically deleted when all stock is depleted."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:318
+#: stock/templates/stock/item_base.html:316
#: templates/js/translated/build.js:1040
msgid "No location set"
msgstr "未设置仓储地点"
-#: stock/templates/stock/item_base.html:325
+#: stock/templates/stock/item_base.html:323
msgid "Barcode Identifier"
msgstr ""
-#: stock/templates/stock/item_base.html:367
+#: stock/templates/stock/item_base.html:365
msgid "Parent Item"
msgstr ""
-#: stock/templates/stock/item_base.html:385
+#: stock/templates/stock/item_base.html:383
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:410
+#: stock/templates/stock/item_base.html:408
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:500
+#: stock/templates/stock/item_base.html:498
msgid "Edit Stock Status"
msgstr ""
@@ -6041,59 +6056,59 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:33
+#: stock/templates/stock/location.html:37
msgid "Check-in Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:65
msgid "Location actions"
msgstr "仓储地操作"
-#: stock/templates/stock/location.html:63
+#: stock/templates/stock/location.html:67
msgid "Edit location"
msgstr "编辑仓储地"
-#: stock/templates/stock/location.html:65
+#: stock/templates/stock/location.html:69
msgid "Delete location"
msgstr "删除仓储地"
-#: stock/templates/stock/location.html:75
+#: stock/templates/stock/location.html:79
msgid "Create new stock location"
msgstr "新建仓储地点"
-#: stock/templates/stock/location.html:76
+#: stock/templates/stock/location.html:80
msgid "New Location"
msgstr "新建仓储地点"
-#: stock/templates/stock/location.html:95
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:99
+#: stock/templates/stock/location.html:105
msgid "Location Path"
msgstr ""
-#: stock/templates/stock/location.html:102
+#: stock/templates/stock/location.html:106
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:115
+#: stock/templates/stock/location.html:119
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr "您不在此仓储地的所有者列表中,无法编辑此仓储地。"
-#: stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:175
+#: stock/templates/stock/location.html:132
+#: stock/templates/stock/location.html:179
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/templates/stock/location.html:142 templates/InvenTree/search.html:170
+#: stock/templates/stock/location.html:146 templates/InvenTree/search.html:164
#: templates/stats.html:97 users/models.py:42
msgid "Stock Locations"
msgstr "仓储地点"
-#: stock/templates/stock/location.html:182 templates/stock_table.html:30
+#: stock/templates/stock/location.html:186 templates/stock_table.html:30
msgid "Printing Actions"
msgstr "打印操作"
-#: stock/templates/stock/location.html:186 templates/stock_table.html:34
+#: stock/templates/stock/location.html:190 templates/stock_table.html:34
msgid "Print labels"
msgstr "打印标签"
@@ -6178,7 +6193,7 @@ msgstr ""
msgid "Uninstall Stock Items"
msgstr ""
-#: stock/views.py:727 templates/js/translated/stock.js:887
+#: stock/views.py:727 templates/js/translated/stock.js:1066
msgid "Confirm stock adjustment"
msgstr ""
@@ -6186,7 +6201,7 @@ msgstr ""
msgid "Uninstalled stock items"
msgstr ""
-#: stock/views.py:760 templates/js/translated/stock.js:323
+#: stock/views.py:760 templates/js/translated/stock.js:324
msgid "Edit Stock Item"
msgstr ""
@@ -6198,7 +6213,7 @@ msgstr "新建仓储地点"
msgid "Create new Stock Item"
msgstr ""
-#: stock/views.py:1153 templates/js/translated/stock.js:303
+#: stock/views.py:1153 templates/js/translated/stock.js:304
msgid "Duplicate Stock Item"
msgstr ""
@@ -6314,10 +6329,6 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: templates/InvenTree/search.html:22
-msgid "Enter a search query"
-msgstr ""
-
#: templates/InvenTree/settings/barcode.html:8
msgid "Barcode Settings"
msgstr "条形码设置"
@@ -6363,7 +6374,7 @@ msgstr ""
msgid "Login Settings"
msgstr ""
-#: templates/InvenTree/settings/login.html:20 templates/account/signup.html:5
+#: templates/InvenTree/settings/login.html:21 templates/account/signup.html:5
msgid "Signup"
msgstr ""
@@ -6648,7 +6659,7 @@ msgstr "名字"
msgid "Last Name"
msgstr "姓氏"
-#: templates/InvenTree/settings/user.html:55
+#: templates/InvenTree/settings/user.html:54
msgid "The following email addresses are associated with your account:"
msgstr ""
@@ -6673,145 +6684,193 @@ msgid "Re-send Verification"
msgstr ""
#: templates/InvenTree/settings/user.html:87
-#: templates/InvenTree/settings/user.html:154
+#: templates/InvenTree/settings/user.html:149
msgid "Remove"
msgstr ""
-#: templates/InvenTree/settings/user.html:94
+#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:201
msgid "Warning:"
msgstr ""
-#: templates/InvenTree/settings/user.html:95
+#: templates/InvenTree/settings/user.html:96
msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
msgstr ""
-#: templates/InvenTree/settings/user.html:102
+#: templates/InvenTree/settings/user.html:104
msgid "Add Email Address"
msgstr ""
-#: templates/InvenTree/settings/user.html:112
-msgid "Enter e-mail address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:114
+#: templates/InvenTree/settings/user.html:109
msgid "Add Email"
msgstr ""
-#: templates/InvenTree/settings/user.html:124
+#: templates/InvenTree/settings/user.html:117
msgid "Social Accounts"
msgstr ""
-#: templates/InvenTree/settings/user.html:129
+#: templates/InvenTree/settings/user.html:122
msgid "You can sign in to your account using any of the following third party accounts:"
msgstr ""
-#: templates/InvenTree/settings/user.html:163
-msgid "There are no social network accounts connected to your InvenTree account"
+#: templates/InvenTree/settings/user.html:157
+msgid "You currently have no social network accounts connected to this account."
msgstr ""
-#: templates/InvenTree/settings/user.html:168
+#: templates/InvenTree/settings/user.html:162
msgid "Add a 3rd Party Account"
msgstr ""
-#: templates/InvenTree/settings/user.html:179
-msgid "Active Sessions"
+#: templates/InvenTree/settings/user.html:172
+msgid "Multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:185
-msgid "Log out active sessions (except this one)"
+#: templates/InvenTree/settings/user.html:177
+msgid "You have these factors available:"
msgstr ""
-#: templates/InvenTree/settings/user.html:186
-msgid "Log Out Active Sessions"
+#: templates/InvenTree/settings/user.html:187
+msgid "TOTP"
msgstr ""
-#: templates/InvenTree/settings/user.html:195
-msgid "unknown on unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:196
-msgid "unknown"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:200
-msgid "IP Address"
-msgstr ""
-
-#: templates/InvenTree/settings/user.html:201
-msgid "Device"
+#: templates/InvenTree/settings/user.html:193
+msgid "Static"
msgstr ""
#: templates/InvenTree/settings/user.html:202
-msgid "Last Activity"
+msgid "You currently do not have any factors set up."
msgstr ""
-#: templates/InvenTree/settings/user.html:211
-#, python-format
-msgid "%(time)s ago (this session)"
+#: templates/InvenTree/settings/user.html:209
+msgid "Change factors"
msgstr ""
-#: templates/InvenTree/settings/user.html:213
-#, python-format
-msgid "%(time)s ago"
+#: templates/InvenTree/settings/user.html:210
+msgid "Setup multifactor"
msgstr ""
-#: templates/InvenTree/settings/user.html:224
-msgid "Do you really want to remove the selected email address?"
+#: templates/InvenTree/settings/user.html:212
+msgid "Remove multifactor"
msgstr ""
+#: templates/InvenTree/settings/user.html:219
#: templates/InvenTree/settings/user_display.html:25
msgid "Theme Settings"
msgstr "主题设置"
+#: templates/InvenTree/settings/user.html:227
#: templates/InvenTree/settings/user_display.html:35
msgid "Select theme"
msgstr ""
+#: templates/InvenTree/settings/user.html:237
#: templates/InvenTree/settings/user_display.html:46
msgid "Set Theme"
msgstr "设置主题"
+#: templates/InvenTree/settings/user.html:246
#: templates/InvenTree/settings/user_display.html:54
msgid "Language Settings"
msgstr "语言设置"
+#: templates/InvenTree/settings/user.html:254
#: templates/InvenTree/settings/user_display.html:63
msgid "Select language"
msgstr ""
+#: templates/InvenTree/settings/user.html:270
#: templates/InvenTree/settings/user_display.html:79
#, python-format
msgid "%(lang_translated)s%% translated"
msgstr "%(lang_translated)s%% 已翻译"
+#: templates/InvenTree/settings/user.html:272
#: templates/InvenTree/settings/user_display.html:81
msgid "No translations available"
msgstr "无可用翻译"
+#: templates/InvenTree/settings/user.html:279
#: templates/InvenTree/settings/user_display.html:88
msgid "Set Language"
msgstr "设置语言"
+#: templates/InvenTree/settings/user.html:281
#: templates/InvenTree/settings/user_display.html:91
msgid "Some languages are not complete"
msgstr ""
+#: templates/InvenTree/settings/user.html:283
#: templates/InvenTree/settings/user_display.html:93
msgid "Show only sufficent"
msgstr ""
+#: templates/InvenTree/settings/user.html:285
+#: templates/InvenTree/settings/user_display.html:95
+msgid "Show them too"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:292
+#: templates/InvenTree/settings/user_display.html:101
+msgid "Help the translation efforts!"
+msgstr "帮助翻译工作!"
+
+#: templates/InvenTree/settings/user.html:293
+#, python-format
+msgid "Native language translation of the\n"
+" InvenTree web application is community contributed via crowdin. Contributions are\n"
+" welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:302
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:308
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:309
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:318
+msgid "unknown on unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:319
+msgid "unknown"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:323
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:324
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:325
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:334
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:336
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:348
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
#: templates/InvenTree/settings/user_display.html:95
msgid "and hidden."
msgstr ""
-#: templates/InvenTree/settings/user_display.html:95
-msgid "Show them too"
-msgstr ""
-
-#: templates/InvenTree/settings/user_display.html:101
-msgid "Help the translation efforts!"
-msgstr "帮助翻译工作!"
-
#: templates/InvenTree/settings/user_display.html:102
#, python-format
msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged."
@@ -6830,7 +6889,7 @@ msgid "InvenTree Version Information"
msgstr ""
#: templates/about.html:11 templates/about.html:105
-#: templates/js/translated/bom.js:283 templates/js/translated/modals.js:53
+#: templates/js/translated/bom.js:395 templates/js/translated/modals.js:53
#: templates/js/translated/modals.js:568 templates/js/translated/modals.js:662
#: templates/js/translated/modals.js:965 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
@@ -7006,6 +7065,71 @@ msgstr ""
msgid "View in administration panel"
msgstr ""
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:12
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No tokens. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:27
+msgid "Generate backup tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:31
+#: templates/allauth_2fa/setup.html:40
+msgid "back to settings"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:14
+msgid "Disable Two-Factor"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:23
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:27
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:35
+msgid "Verify"
+msgstr ""
+
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:54
msgid "Add Link"
msgstr ""
@@ -7044,13 +7168,13 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:991
+#: templates/js/translated/bom.js:1103
msgid "Required Quantity"
msgstr ""
#: templates/email/build_order_required_stock.html:19
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/bom.js:467 templates/js/translated/build.js:1134
+#: templates/js/translated/bom.js:579 templates/js/translated/build.js:1134
#: templates/js/translated/build.js:1755
#: templates/js/translated/table_filters.js:178
msgid "Available"
@@ -7239,7 +7363,7 @@ msgstr ""
msgid "Unlink"
msgstr ""
-#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:839
+#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:1018
msgid "Remove stock item"
msgstr ""
@@ -7281,91 +7405,153 @@ msgstr ""
msgid "Barcode does not match a valid location"
msgstr ""
-#: templates/js/translated/bom.js:184
+#: templates/js/translated/bom.js:36
+msgid "Download BOM Template"
+msgstr ""
+
+#: templates/js/translated/bom.js:39 templates/js/translated/bom.js:73
+#: templates/js/translated/order.js:369 templates/js/translated/stock.js:510
+msgid "Format"
+msgstr ""
+
+#: templates/js/translated/bom.js:40 templates/js/translated/bom.js:74
+#: templates/js/translated/order.js:370 templates/js/translated/stock.js:511
+msgid "Select file format"
+msgstr ""
+
+#: templates/js/translated/bom.js:81
+msgid "Cascading"
+msgstr ""
+
+#: templates/js/translated/bom.js:82
+msgid "Download cascading / multi-level BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:87
+msgid "Levels"
+msgstr "等级"
+
+#: templates/js/translated/bom.js:88
+msgid "Select maximum number of BOM levels to export (0 = all levels)"
+msgstr ""
+
+#: templates/js/translated/bom.js:94
+msgid "Include Parameter Data"
+msgstr "包含参数数据"
+
+#: templates/js/translated/bom.js:95
+msgid "Include part parameter data in exported BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:100
+msgid "Include Stock Data"
+msgstr "包括库存数据"
+
+#: templates/js/translated/bom.js:101
+msgid "Include part stock data in exported BOM"
+msgstr "在导出 BOM 中包括库存数据"
+
+#: templates/js/translated/bom.js:106
+msgid "Include Manufacturer Data"
+msgstr "包括制造商数据"
+
+#: templates/js/translated/bom.js:107
+msgid "Include part manufacturer data in exported BOM"
+msgstr "在导出 BOM 中包含制造商数据"
+
+#: templates/js/translated/bom.js:112
+msgid "Include Supplier Data"
+msgstr "包含供应商数据"
+
+#: templates/js/translated/bom.js:113
+msgid "Include part supplier data in exported BOM"
+msgstr "在导出 BOM 中包含供应商数据"
+
+#: templates/js/translated/bom.js:296
msgid "Remove substitute part"
msgstr ""
-#: templates/js/translated/bom.js:228
+#: templates/js/translated/bom.js:340
msgid "Select and add a new variant item using the input below"
msgstr ""
-#: templates/js/translated/bom.js:239
+#: templates/js/translated/bom.js:351
msgid "Are you sure you wish to remove this substitute part link?"
msgstr ""
-#: templates/js/translated/bom.js:245
+#: templates/js/translated/bom.js:357
msgid "Remove Substitute Part"
msgstr ""
-#: templates/js/translated/bom.js:284
+#: templates/js/translated/bom.js:396
msgid "Add Substitute"
msgstr ""
-#: templates/js/translated/bom.js:285
+#: templates/js/translated/bom.js:397
msgid "Edit BOM Item Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:404
+#: templates/js/translated/bom.js:516
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:408 templates/js/translated/build.js:1116
+#: templates/js/translated/bom.js:520 templates/js/translated/build.js:1116
msgid "Variant stock allowed"
msgstr ""
-#: templates/js/translated/bom.js:413
+#: templates/js/translated/bom.js:525
msgid "Open subassembly"
msgstr ""
-#: templates/js/translated/bom.js:485
+#: templates/js/translated/bom.js:597
msgid "Substitutes"
msgstr ""
-#: templates/js/translated/bom.js:500
+#: templates/js/translated/bom.js:612
msgid "Purchase Price Range"
msgstr ""
-#: templates/js/translated/bom.js:507
+#: templates/js/translated/bom.js:619
msgid "Purchase Price Average"
msgstr ""
-#: templates/js/translated/bom.js:556 templates/js/translated/bom.js:645
+#: templates/js/translated/bom.js:668 templates/js/translated/bom.js:757
msgid "View BOM"
msgstr ""
-#: templates/js/translated/bom.js:616
+#: templates/js/translated/bom.js:728
msgid "Validate BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:618
+#: templates/js/translated/bom.js:730
msgid "This line has been validated"
msgstr ""
-#: templates/js/translated/bom.js:620
+#: templates/js/translated/bom.js:732
msgid "Edit substitute parts"
msgstr ""
-#: templates/js/translated/bom.js:622 templates/js/translated/bom.js:796
+#: templates/js/translated/bom.js:734 templates/js/translated/bom.js:908
msgid "Edit BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:624 templates/js/translated/bom.js:779
+#: templates/js/translated/bom.js:736 templates/js/translated/bom.js:891
msgid "Delete BOM Item"
msgstr ""
-#: templates/js/translated/bom.js:718 templates/js/translated/build.js:860
+#: templates/js/translated/bom.js:830 templates/js/translated/build.js:860
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:774
+#: templates/js/translated/bom.js:886
msgid "Are you sure you want to delete this BOM item?"
msgstr ""
-#: templates/js/translated/bom.js:974 templates/js/translated/build.js:1100
+#: templates/js/translated/bom.js:1086 templates/js/translated/build.js:1100
msgid "Required Part"
msgstr ""
-#: templates/js/translated/bom.js:996
+#: templates/js/translated/bom.js:1108
msgid "Inherited from parent BOM"
msgstr ""
@@ -7464,7 +7650,7 @@ msgstr ""
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:1199 templates/stock_table.html:52
+#: templates/js/translated/build.js:1199 templates/stock_table.html:53
msgid "Order stock"
msgstr ""
@@ -7509,9 +7695,9 @@ msgstr ""
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1147
-#: templates/js/translated/part.js:1558 templates/js/translated/stock.js:1333
-#: templates/js/translated/stock.js:2128
+#: templates/js/translated/build.js:1599 templates/js/translated/part.js:1149
+#: templates/js/translated/part.js:1560 templates/js/translated/stock.js:1512
+#: templates/js/translated/stock.js:2321
msgid "Select"
msgstr ""
@@ -7519,7 +7705,7 @@ msgstr ""
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2347
+#: templates/js/translated/build.js:1680 templates/js/translated/stock.js:2540
msgid "No user information"
msgstr "没有用户信息"
@@ -7682,20 +7868,20 @@ msgstr ""
msgid "Enter a valid number"
msgstr ""
-#: templates/js/translated/forms.js:1078 templates/modals.html:19
+#: templates/js/translated/forms.js:1080 templates/modals.html:19
#: templates/modals.html:43
msgid "Form errors exist"
msgstr ""
-#: templates/js/translated/forms.js:1469
+#: templates/js/translated/forms.js:1471
msgid "No results found"
msgstr ""
-#: templates/js/translated/forms.js:1673
+#: templates/js/translated/forms.js:1675
msgid "Searching"
msgstr ""
-#: templates/js/translated/forms.js:1893
+#: templates/js/translated/forms.js:1895
msgid "Clear input"
msgstr ""
@@ -7708,7 +7894,7 @@ msgid "NO"
msgstr ""
#: templates/js/translated/label.js:29 templates/js/translated/report.js:118
-#: templates/js/translated/stock.js:863
+#: templates/js/translated/stock.js:1042
msgid "Select Stock Items"
msgstr "选择库存项"
@@ -7888,14 +8074,6 @@ msgstr ""
msgid "Export Order"
msgstr ""
-#: templates/js/translated/order.js:369 templates/js/translated/stock.js:509
-msgid "Format"
-msgstr ""
-
-#: templates/js/translated/order.js:370 templates/js/translated/stock.js:510
-msgid "Select file format"
-msgstr ""
-
#: templates/js/translated/order.js:460
msgid "Select Line Items"
msgstr ""
@@ -7908,7 +8086,7 @@ msgstr ""
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/order.js:520 templates/js/translated/stock.js:1930
+#: templates/js/translated/order.js:520 templates/js/translated/stock.js:2123
msgid "Stock Status"
msgstr ""
@@ -7957,7 +8135,7 @@ msgid "Total"
msgstr ""
#: templates/js/translated/order.js:1068 templates/js/translated/order.js:2163
-#: templates/js/translated/part.js:1775 templates/js/translated/part.js:1986
+#: templates/js/translated/part.js:1777 templates/js/translated/part.js:1988
msgid "Unit Price"
msgstr "单价"
@@ -8042,7 +8220,7 @@ msgid "Delete Stock Allocation"
msgstr ""
#: templates/js/translated/order.js:1959 templates/js/translated/order.js:2048
-#: templates/js/translated/stock.js:1249
+#: templates/js/translated/stock.js:1428
msgid "Shipped to customer"
msgstr ""
@@ -8206,92 +8384,92 @@ msgstr "可销售商品"
msgid "No variants found"
msgstr ""
-#: templates/js/translated/part.js:946
+#: templates/js/translated/part.js:948
msgid "Delete part relationship"
msgstr ""
-#: templates/js/translated/part.js:970
+#: templates/js/translated/part.js:972
msgid "Delete Part Relationship"
msgstr ""
-#: templates/js/translated/part.js:1037 templates/js/translated/part.js:1297
+#: templates/js/translated/part.js:1039 templates/js/translated/part.js:1299
msgid "No parts found"
msgstr ""
-#: templates/js/translated/part.js:1207
+#: templates/js/translated/part.js:1209
msgid "No category"
msgstr "没有分类"
-#: templates/js/translated/part.js:1230
+#: templates/js/translated/part.js:1232
#: templates/js/translated/table_filters.js:412
msgid "Low stock"
msgstr ""
-#: templates/js/translated/part.js:1321 templates/js/translated/part.js:1493
-#: templates/js/translated/stock.js:2089
+#: templates/js/translated/part.js:1323 templates/js/translated/part.js:1495
+#: templates/js/translated/stock.js:2282
msgid "Display as list"
msgstr ""
-#: templates/js/translated/part.js:1337
+#: templates/js/translated/part.js:1339
msgid "Display as grid"
msgstr ""
-#: templates/js/translated/part.js:1512 templates/js/translated/stock.js:2108
+#: templates/js/translated/part.js:1514 templates/js/translated/stock.js:2301
msgid "Display as tree"
msgstr ""
-#: templates/js/translated/part.js:1576
+#: templates/js/translated/part.js:1578
msgid "Subscribed category"
msgstr ""
-#: templates/js/translated/part.js:1590 templates/js/translated/stock.js:2152
+#: templates/js/translated/part.js:1592 templates/js/translated/stock.js:2345
msgid "Path"
msgstr ""
-#: templates/js/translated/part.js:1634
+#: templates/js/translated/part.js:1636
msgid "No test templates matching query"
msgstr ""
-#: templates/js/translated/part.js:1685 templates/js/translated/stock.js:1055
+#: templates/js/translated/part.js:1687 templates/js/translated/stock.js:1234
msgid "Edit test result"
msgstr ""
-#: templates/js/translated/part.js:1686 templates/js/translated/stock.js:1056
+#: templates/js/translated/part.js:1688 templates/js/translated/stock.js:1235
msgid "Delete test result"
msgstr ""
-#: templates/js/translated/part.js:1692
+#: templates/js/translated/part.js:1694
msgid "This test is defined for a parent part"
msgstr ""
-#: templates/js/translated/part.js:1714
+#: templates/js/translated/part.js:1716
msgid "Edit Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1728
+#: templates/js/translated/part.js:1730
msgid "Delete Test Result Template"
msgstr ""
-#: templates/js/translated/part.js:1753
+#: templates/js/translated/part.js:1755
#, python-brace-format
msgid "No ${human_name} information found"
msgstr ""
-#: templates/js/translated/part.js:1808
+#: templates/js/translated/part.js:1810
#, python-brace-format
msgid "Edit ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1809
+#: templates/js/translated/part.js:1811
#, python-brace-format
msgid "Delete ${human_name}"
msgstr ""
-#: templates/js/translated/part.js:1910
+#: templates/js/translated/part.js:1912
msgid "Single Price"
msgstr ""
-#: templates/js/translated/part.js:1929
+#: templates/js/translated/part.js:1931
msgid "Single Price Difference"
msgstr ""
@@ -8365,316 +8543,340 @@ msgstr ""
msgid "Sales Order(s) must be selected before printing report"
msgstr ""
-#: templates/js/translated/stock.js:72
+#: templates/js/translated/stock.js:73
msgid "Serialize Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:90 templates/js/translated/stock.js:172
+#: templates/js/translated/stock.js:91 templates/js/translated/stock.js:173
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/stock.js:92 templates/js/translated/stock.js:174
+#: templates/js/translated/stock.js:93 templates/js/translated/stock.js:175
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/stock.js:100
+#: templates/js/translated/stock.js:101
msgid "Confirm Stock Serialization"
msgstr ""
-#: templates/js/translated/stock.js:109
+#: templates/js/translated/stock.js:110
msgid "Parent stock location"
msgstr ""
-#: templates/js/translated/stock.js:145
+#: templates/js/translated/stock.js:146
msgid "New Stock Location"
msgstr ""
-#: templates/js/translated/stock.js:185
+#: templates/js/translated/stock.js:186
msgid "This part cannot be serialized"
msgstr ""
-#: templates/js/translated/stock.js:224
+#: templates/js/translated/stock.js:225
msgid "Enter initial quantity for this stock item"
msgstr ""
-#: templates/js/translated/stock.js:230
+#: templates/js/translated/stock.js:231
msgid "Enter serial numbers for new stock (or leave blank)"
msgstr ""
-#: templates/js/translated/stock.js:373
+#: templates/js/translated/stock.js:374
msgid "Created new stock item"
msgstr ""
-#: templates/js/translated/stock.js:386
+#: templates/js/translated/stock.js:387
msgid "Created multiple stock items"
msgstr ""
-#: templates/js/translated/stock.js:411
+#: templates/js/translated/stock.js:412
msgid "Find Serial Number"
msgstr ""
-#: templates/js/translated/stock.js:415 templates/js/translated/stock.js:416
+#: templates/js/translated/stock.js:416 templates/js/translated/stock.js:417
msgid "Enter serial number"
msgstr ""
-#: templates/js/translated/stock.js:432
+#: templates/js/translated/stock.js:433
msgid "Enter a serial number"
msgstr ""
-#: templates/js/translated/stock.js:452
+#: templates/js/translated/stock.js:453
msgid "No matching serial number"
msgstr ""
-#: templates/js/translated/stock.js:461
+#: templates/js/translated/stock.js:462
msgid "More than one matching result found"
msgstr ""
-#: templates/js/translated/stock.js:506
+#: templates/js/translated/stock.js:507
msgid "Export Stock"
msgstr ""
-#: templates/js/translated/stock.js:517
+#: templates/js/translated/stock.js:518
msgid "Include Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:518
+#: templates/js/translated/stock.js:519
msgid "Include stock items in sublocations"
msgstr ""
-#: templates/js/translated/stock.js:627
+#: templates/js/translated/stock.js:628
msgid "Confirm stock assignment"
msgstr ""
-#: templates/js/translated/stock.js:628
+#: templates/js/translated/stock.js:629
msgid "Assign Stock to Customer"
msgstr ""
-#: templates/js/translated/stock.js:713
+#: templates/js/translated/stock.js:706
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:707
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:709
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:710
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:796
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:797
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:892
msgid "Transfer Stock"
msgstr ""
-#: templates/js/translated/stock.js:714
+#: templates/js/translated/stock.js:893
msgid "Move"
msgstr ""
-#: templates/js/translated/stock.js:720
+#: templates/js/translated/stock.js:899
msgid "Count Stock"
msgstr ""
-#: templates/js/translated/stock.js:721
+#: templates/js/translated/stock.js:900
msgid "Count"
msgstr ""
-#: templates/js/translated/stock.js:725
+#: templates/js/translated/stock.js:904
msgid "Remove Stock"
msgstr ""
-#: templates/js/translated/stock.js:726
+#: templates/js/translated/stock.js:905
msgid "Take"
msgstr ""
-#: templates/js/translated/stock.js:730
+#: templates/js/translated/stock.js:909
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:731 users/models.py:202
+#: templates/js/translated/stock.js:910 users/models.py:205
msgid "Add"
msgstr "添加"
-#: templates/js/translated/stock.js:735 templates/stock_table.html:57
+#: templates/js/translated/stock.js:914 templates/stock_table.html:58
msgid "Delete Stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Quantity cannot be adjusted for serialized stock"
msgstr ""
-#: templates/js/translated/stock.js:824
+#: templates/js/translated/stock.js:1003
msgid "Specify stock quantity"
msgstr ""
-#: templates/js/translated/stock.js:864
+#: templates/js/translated/stock.js:1043
msgid "You must select at least one available stock item"
msgstr ""
-#: templates/js/translated/stock.js:1022
+#: templates/js/translated/stock.js:1201
msgid "PASS"
msgstr ""
-#: templates/js/translated/stock.js:1024
+#: templates/js/translated/stock.js:1203
msgid "FAIL"
msgstr ""
-#: templates/js/translated/stock.js:1029
+#: templates/js/translated/stock.js:1208
msgid "NO RESULT"
msgstr ""
-#: templates/js/translated/stock.js:1051
+#: templates/js/translated/stock.js:1230
msgid "Add test result"
msgstr ""
-#: templates/js/translated/stock.js:1077
+#: templates/js/translated/stock.js:1256
msgid "No test results found"
msgstr ""
-#: templates/js/translated/stock.js:1134
+#: templates/js/translated/stock.js:1313
msgid "Test Date"
msgstr ""
-#: templates/js/translated/stock.js:1241
+#: templates/js/translated/stock.js:1420
msgid "In production"
msgstr "正在生产"
-#: templates/js/translated/stock.js:1245
+#: templates/js/translated/stock.js:1424
msgid "Installed in Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:1253
+#: templates/js/translated/stock.js:1432
msgid "Assigned to Sales Order"
msgstr ""
-#: templates/js/translated/stock.js:1259
+#: templates/js/translated/stock.js:1438
msgid "No stock location set"
msgstr "未设置仓储地点"
-#: templates/js/translated/stock.js:1417
+#: templates/js/translated/stock.js:1596
msgid "Stock item is in production"
msgstr "库存品正在生产"
-#: templates/js/translated/stock.js:1422
+#: templates/js/translated/stock.js:1601
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:1425
+#: templates/js/translated/stock.js:1604
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:1429
+#: templates/js/translated/stock.js:1608
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:1431
+#: templates/js/translated/stock.js:1610
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:1437
+#: templates/js/translated/stock.js:1616
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:1439
+#: templates/js/translated/stock.js:1618
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:1441
+#: templates/js/translated/stock.js:1620
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:1446
+#: templates/js/translated/stock.js:1625
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:1453
+#: templates/js/translated/stock.js:1632
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:1455
+#: templates/js/translated/stock.js:1634
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:1457
+#: templates/js/translated/stock.js:1636
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:1461
+#: templates/js/translated/stock.js:1640
#: templates/js/translated/table_filters.js:188
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:1511
+#: templates/js/translated/stock.js:1690
msgid "Stocktake"
msgstr ""
-#: templates/js/translated/stock.js:1584
+#: templates/js/translated/stock.js:1763
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:1622
+#: templates/js/translated/stock.js:1801
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:1643 templates/js/translated/stock.js:1691
+#: templates/js/translated/stock.js:1822 templates/js/translated/stock.js:1870
msgid "items"
msgstr ""
-#: templates/js/translated/stock.js:1731
+#: templates/js/translated/stock.js:1910
msgid "batches"
msgstr ""
-#: templates/js/translated/stock.js:1758
+#: templates/js/translated/stock.js:1937
msgid "locations"
msgstr ""
-#: templates/js/translated/stock.js:1760
+#: templates/js/translated/stock.js:1939
msgid "Undefined location"
msgstr ""
-#: templates/js/translated/stock.js:1945
+#: templates/js/translated/stock.js:2138
msgid "Set Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:1959
+#: templates/js/translated/stock.js:2152
msgid "Select Status Code"
msgstr ""
-#: templates/js/translated/stock.js:1960
+#: templates/js/translated/stock.js:2153
msgid "Status code must be selected"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2377
msgid "Invalid date"
msgstr ""
-#: templates/js/translated/stock.js:2206
+#: templates/js/translated/stock.js:2399
msgid "Details"
msgstr "详情"
-#: templates/js/translated/stock.js:2231
+#: templates/js/translated/stock.js:2424
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2250
+#: templates/js/translated/stock.js:2443
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2269
+#: templates/js/translated/stock.js:2462
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2480
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2310
+#: templates/js/translated/stock.js:2503
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:2318
+#: templates/js/translated/stock.js:2511
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:2359
+#: templates/js/translated/stock.js:2552
msgid "Edit tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2360
+#: templates/js/translated/stock.js:2553
msgid "Delete tracking entry"
msgstr ""
-#: templates/js/translated/stock.js:2411
+#: templates/js/translated/stock.js:2604
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:2462
+#: templates/js/translated/stock.js:2655
msgid "Uninstall Stock Item"
msgstr ""
@@ -9059,18 +9261,26 @@ msgid "Move stock"
msgstr ""
#: templates/stock_table.html:52
+msgid "Merge selected stock items"
+msgstr ""
+
+#: templates/stock_table.html:52
+msgid "Merge stock"
+msgstr ""
+
+#: templates/stock_table.html:53
msgid "Order selected items"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change status"
msgstr ""
-#: templates/stock_table.html:54
+#: templates/stock_table.html:55
msgid "Change stock status"
msgstr ""
-#: templates/stock_table.html:57
+#: templates/stock_table.html:58
msgid "Delete selected items"
msgstr ""
@@ -9106,35 +9316,35 @@ msgstr "权限"
msgid "Important dates"
msgstr "重要日期"
-#: users/models.py:189
+#: users/models.py:192
msgid "Permission set"
msgstr "权限设置"
-#: users/models.py:197
+#: users/models.py:200
msgid "Group"
msgstr "群组"
-#: users/models.py:200
+#: users/models.py:203
msgid "View"
msgstr "视图"
-#: users/models.py:200
+#: users/models.py:203
msgid "Permission to view items"
msgstr "查看项目权限"
-#: users/models.py:202
+#: users/models.py:205
msgid "Permission to add items"
msgstr "添加项目权限"
-#: users/models.py:204
+#: users/models.py:207
msgid "Change"
msgstr "更改"
-#: users/models.py:204
+#: users/models.py:207
msgid "Permissions to edit items"
msgstr "编辑项目权限"
-#: users/models.py:206
+#: users/models.py:209
msgid "Permission to delete items"
msgstr "删除项目权限"